В Python 2.x файлы .pyc
хранятся в том же каталоге, что и исходный файл .py
.В Python 3.2+ файлы .pyc
хранятся в каталоге __pycache__
.
Если код написан правильно, он может выполняться обоими интерпретаторами, и файлы .pyc
могут нормально сосуществовать.Но как только я хочу избавиться от исходного кода, у меня возникает проблема: интерпретатор Python 2.x по-прежнему импортирует правильный файл .pyc
, но интерпретатор Python 3.2+ отказывается импортировать скомпилированный .pyc
из __pycache__
каталог и пытается импортировать файл .pyc
из предыдущей версии и завершается неудачей, поскольку магические числа не совпадают.
Возможно ли сделать оба интерпретатора Python счастливыми, не раскрывая исходный код?
[Обновлено]
Я пробовал это (это выглядело как решение):
- Развертывание источников как обычно
- Компиляция каждого.Py-файл с компилятором Python 2.x (это приведет к созданию
.pyc
файла в том же каталоге) - Компиляция каждого .py-файла с помощью компилятора Python 3.2+ (это приведет к созданию
.pyc
файла в __pycache__
каталог) - Очистить содержимое файла
.py
, сохранив дату его изменения
Интерпретатор Python 2 доволен.Интерпретатор Python 3 подозревает, что источник изменен, и перекомпилирует измененный источник.В чем причина его перекомпиляции?Сохраняет ли он также размер исходного файла?Контрольная сумма?