У меня есть две Ubuntu 18.04.1 системы LTS:
Примечание: Все вещи в обеих системах были установлены с помощью APT (от deb-пакетов). Я не использовал pip
/pip3
, make install
, checkinstall
и другие подобные утилиты. Таким образом, это находится абсолютно по теме. Это - Ubuntu, Ubuntu использует APT.
Первая система имеет следующее pyc
- файлы:
/usr/lib/python2.7/dist-packages/gi/overrides/Dee.pyc
/usr/lib/python3/dist-packages/gi/overrides/__pycache__/Dee.cpython-36.pyc
/usr/lib/python2.7/dist-packages/gi/overrides/Unity.pyc
/usr/lib/python3/dist-packages/gi/overrides/__pycache__/Unity.cpython-36.pyc
Вторая система не имеет этих файлов.
Я не могу найти пакеты для этих файлов с dpkg -S
. Но я могу найти для сценариев (*.py
).
Поскольку далеко я могу понять, что эти файлы прибыли из gir1.2-dee-1.0
и gir1.2-unity-5.0
.
Но после переустановки этих пакетов *.pyc
файлы не создаются.
Что не так?
Как добраться *.pyc
в их местах? Моя система будет обычно работать без этих файлов?
Я ожидаю основанного на APT
Это не связано с APT так, чтобы собрался занять время ;-)
Что не так?
Ничего.
Как получить *.pyc в их местах?
Если Вы действительно хотите Вам, мог бы сделать это вручную с py_compile. Из командной строки Python (замена {pyfile.py} для той Вы хотите скомпилированный):
>>> import py_compile
>>> py_compile.compile('{pyfile.py}')
Существует также метод командной строки, который позволяет компилировать все в каталоге с...
python -m compileall .
Нет действительно потребности сделать так хотя: они создаются, поскольку Вы используете программное обеспечение на своей машине. Это также, почему это не имеет никакого отношения к APT.
Моя система будет обычно работать без этих файлов?
Да.
Что на самом деле происходит: когда модуль импортируется или когда источник был изменен, a .pyc
файл, содержащий скомпилированный код, будет создан в том же каталоге как .py file
. Этот файл используется для пропуска шага компиляции для того модуля. Натертые куски нескольких миллисекунд на выполнении (не важный для нормальных использований, но воображают веб-сервер, называя те же 1000-е сценария времен в секунды. Те миллисекунды внезапно становятся важными).
Относительно не наблюдения a .pyc
зарегистрируйте где-нибудь:
Существуют времена, когда Python не может скомпилировать. 1 пример был бы то, при использовании 2-го пользователя, которому не разрешают создать файл в месте, компиляция была бы сохранена. Выполнение не остановит и затем будет использовать источник (и не скомпилированная версия) (Запущение скрипта не считают импортом; это только сделано для модулей).
*.pyc
файлы содержат байт-код Python. Они создаются когда соответствие *.py
файл выполняется впервые (и обновляется на первом показе после соответствия *.py
изменения).
Так как интерпретатор Python на Вашей машине может создать *.pyc
файлы и хороши в создании их на лету, *.pyc
файлы не включены в репозитории APT. Они просто сгенерированы на Вашей машине от соответствия *.py
файлы – которые включены.
В результате машина, используемая в течение более длительного времени и быть запускающий больше приложений, будет, вероятно, содержать больше *.pyc
файлы, чем чистая установка ОС, если Вы не очищаете те файлы.
См. также: