sdist/bdist_wheel не включает pyc в Linux, но включен в Windows
Я пытаюсь создать дистрибутив Python, в который я должен включить как исходный код, так и скомпилированный двоичный файл. (Да, я читаю аргументы против / для добавления .pyc
, но мой вариант использования требует .pyc
быть добавленным). При выполнении моих шагов в Windows, исходный и скомпилированный двоичные файлы добавляются в выходной файл (я использовал оба sdist
а также bdist_wheel
).
Скажем, у меня есть следующая структура:
root
+--folderA
+--alpha
+--beta
+--__init__.py
+--folderB
folderA
содержит исходные коды, в то время как folderB
содержит другие файлы в своих подкаталогах.
Шаги сделаны:
- Модули компилируются с использованием
compileall
- Источники в
alpha
удалены. Источники вbeta
хранятся. - Бежать
python setup.py sdist|bdist_wheel
я использовал find_packages()
в setup.py, чтобы обнаружить модули. Модули в alpha
не обнаружены в то время как те, в beta
найдены.
В результатах .tgz
а также .whl
файлы в винде, все необходимые файлы есть. Все хорошо.
Однако, когда та же самая процедура выполняется в Linux (Ubuntu, чтобы быть конкретным), только модули в beta
добавлены и некоторые модули в folderB
но не другие файлы другого типа и модуляalpha
, sdist
покажет только источник пока bdist
а также bdist_wheel
даст .pyc
только с Я это понимаю sdist
для распространения исходных файлов в то время как bdist
для бинарных файлов.
У меня вопрос, почему поведение в Windows отличается, и возможно ли получить такой же вывод в Linux (.pyc
вместе с другими файлами)?
Я использую Python 2.7.
1 ответ
Чтобы включить файлы в sdist, добавьте их в MANIFEST.in:
global-include *.py *.pyc
В том числе *.pyc
у меня в колёсах работает на линуксе без какой-либо специальной настройки, просто
python setup.py build
python -m compileall build
python setup.py sdist
python setup.py bdist_wheel
PS. Если вы пытаетесь скрыть источники от людей - вы на неправильном пути. *.pyc
файлы могут быть декомпилированы. В стандартной библиотеке есть дизассемблер, и есть много декомпиляторов и декомпиляторов.