Как опубликовать Python 3 без исходного кода RPM? - PullRequest
1 голос
/ 30 октября 2019

У нас есть продукт Python 2, который мы публикуем как RPM. RPM включают только файлы pyo / pyc, а запущенные сценарии ссылаются на определенные файлы pyo для запуска продукта. Мы используем setuptools для упаковки этих RPM:

python setup.py bdist_rpm --release=... --requires=... --bdist-base=...

Теперь мы переносим продукт на Python 3.6 и обнаружили, что файлы pyc больше не находятся в том же месте , что и файлы py,Они расположены в папке __pycache__ в папке файлов py и, более того, они не будут работать, если соответствующий файл py не существует. В прежнем поведении все еще есть поддержка, если pyc-файл заменяет py-файл и отсутствует в __pycache __.

Документация показывает, что компиляция python может принимать флаг -b, который:

Записать файлы байт-кода в их прежние местоположения и имена, которые могут перезаписывать файлы байт-кода, созданные другой версией Python. По умолчанию файлы записываются в их местоположения и имена PEP 3147, что позволяет сосуществовать файлам байт-кода из нескольких версий Python.

Однако, поскольку мы используем setuptools, мы не контролируем компиляциюкомандная строка.

Вопросы:

  1. Есть ли способ заставить setuptools скомпилировать код с флагом -b и сохранить прежнее расположение файлов pyc?
  2. Есть ли лучший способ в Python 3 публиковать RPM без исходного кода и при этом иметь возможность вызывать файл pyc из скрипта?
...