Компиляция Python Pyo файлов - PullRequest
       7

Компиляция Python Pyo файлов

0 голосов
/ 15 ноября 2018

У меня есть старый проект на языке c ++ / python, который включает zip-файл python "python27.zip".Этот zip-файл содержит pyo-оптимизированные файлы.
Я пытаюсь обновить python с версии 2.7 до последней версии 3.7.1 (также обновлен файл * .so lib)
Я сделал следующие шаги:

./configure --enable-shared --prefix=~/python-3.7.1/dist
make
sudo make install

Я вижу, что у меня есть ~/python-3.7.1/dist/lib/python3.7, и его структура близка к той, что у меня есть в моем старом 2.7 zip.Затем я пытаюсь скомпилировать всю папку в pyo, например:

python3.7 -O -m compileall .

Он говорит мне, что для этого требуются Lib и Include (заголовки), поэтому я скопировал эти 2 папки и в это место.
Doing python3.7 -O -m compileall . снова внутри dist/lib/python3.7 показывает мне

Listing './Lib/site-packages'...
Listing './Lib/sqlite3'...
....

и некоторые ошибки, такие как:

Compiling './Lib/test/badsyntax_future10.py'...
***   File "./Lib/test/badsyntax_future10.py", line 3
    from __future__ import print_function
                                        ^
SyntaxError: from __future__ imports must occur at the beginning of the file

Я не вижу внутри пио.Также, если я попытаюсь сделать то же самое для 1 файла, например, python3.7 -O token.py (без ошибок), а также без пио внутри.
Не судите меня строго, я согласен, что могу ошибаться в понимании этого процесса компиляции.

1 Ответ

0 голосов
/ 15 января 2019

Мне пришлось создать свой собственный инструмент, так как я не нашел ничего подходящего для компиляции всех модулей Python в одно место / архив.

Этот PY_COMPILE_HELPER доступен на github.Это было проверено только из Ubuntu.

С этим модулем вы можете:

  • Установить входную и выходную папку для компиляции
  • Выходной источник будет иметь ту же структуру, что и входной источник
  • Установка уровня оптимизации для двоичных файлов
  • Пропуск или включение тестовых модулей
  • Сжатие скомпилированных файлов в один архив
  • Очистка ранее скомпилированных файлов из кэша

Пример использования:

$ ./py_compile_helper.py ./Python-3.7.1/Lib ./out -z -c -o2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...