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 - пока я не найду что-то, мне, возможно, придется страдать от этого:-(

Другие вопросы по тегам