pycompile для python3.2
Я использую Mint 13 и Python 3.2 установлен с помощью apt-get
система управления пакетами. У меня также установлен Python 2.7 вместе с 3.2 Похоже, что pycomile упаковывает код Python 2.7 и выдает исключения для кода Python 3.2.
Я осмотрелся и попытался установить несколько пакетов, но не смог найти pycompile для python 3.2. Как мне получить работу pycompile для python 3.2?
2 ответа
py_compile
является модулем stdlib, который может генерировать байт-код с заданным исходным кодом Python Это редко нужно.
Для компиляции исходного кода Python 3 вы должны использовать включенную в него версию py_compile, а не версию из Python 2.7, если вы используете его из командной строки:
$ python3 -mpy_compile your_script.py
Чтобы изменить местоположение по умолчанию, где хранятся pyc-файлы, вы можете использовать cfile
параметр py_compile.compile()
функция
Байт-код заставляет скрипт работать быстрее?
Это может (на ничтожную сумму). Компилятор Python ничего не делает, поэтому он быстрый.
Вот пример того, как выглядит байт-код в удобочитаемой форме:
>>> def f(o):
... with o:
... pass
...
>>> import dis
>>> dis.dis(f)
2 0 LOAD_FAST 0 (o)
3 SETUP_WITH 5 (to 11)
6 POP_TOP
3 7 POP_BLOCK
8 LOAD_CONST 0 (None)
>> 11 WITH_CLEANUP
12 END_FINALLY
13 LOAD_CONST 0 (None)
16 RETURN_VALUE
Вся тяжелая работа остается за интерпретатором Python, который интерпретирует байт-код во время выполнения.
Или это только для распространения?
Документы предоставляют пример использования: общий каталог с модулями Python, в который могут писать только пользователи-завесы. Вы можете отключить кэширование байт-кода на диск, чтобы можно было использовать py-файлы, которые хранятся в местах, доступных только для чтения, без соответствующих pyc-файлов.
Почему это редко используется?
Обычно pyc-файлы создаются в процессе сборки / установки. Если нет pyc-файлов, они могут быть созданы на лету при импорте модуля:
$ python -c 'import some_module'
Вот что я обнаружил: http://effbot.org/librarybook/py-compile.htm
Я могу запустить оболочку Python 3.2, как описано в приведенной выше ссылке. В результате получается файл.pyc в нечетном каталоге. Pyc больше, чем текстовый файл.py (это должно произойти?) Это не такое удовлетворительное решение, как pycompile - пока я не найду что-то, мне, возможно, придется страдать от этого:-(