Загрузка Python PEX
Я пытался обернуть голову вокруг утилиты python pex ( https://pex.readthedocs.org/en/latest/) для объединения некоторых приложений в файлы.pex для развертывания.
Мое приложение недостаточно велико, чтобы требовать инструмент для сборки штанов из твиттеров, а также у меня есть некоторые требования к сборке, которые штаны не учитывают. Я сделал, однако, попробуйте систему сборки инструментов брюки python_binary
что привело к pex-файлам с источниками, загруженными в корневой каталог pex-файлов. Файлы BUILD в штаны принимают sources
свойство для python_binary, которое может быть глобальным для файлов в каталоге, в котором выполняется сборка, однако, он использует программный API pex, а не утилиту командной строки.
Проблема в том, что когда я использую утилиту командной строки pex самостоятельно, она, кажется, хочет получить дистрибутивы (то есть папки, настроенные с помощью setup.py и т. Д.) И хочет установить мой код в папку.deps в pex-файл, а не просто копирование файлов python в корень pex-файла, как это делают трусы.
Копирование файлов поверх (не установка пакета) невозможно с помощью инструмента командной строки pex?
1 ответ
Начиная с pex 1.0.0 нет возможности напрямую связывать файлы и каталоги, вы должны иметь setup.py, как вы предлагаете, или использовать брюки (больше не Twitter, между прочим - независимый).
Таким образом, у вас есть 3 пути вперед (№1 вы уже знаете, но пишите его для других):
Создайте файл setup.py и наведите указатель на инструмент pex
$ tree -h . ├── [4.0K] lib │ ├── [ 0] __init__.py │ ├── [ 38] lib.py │ └── [ 68] main.py └── [ 76] setup.py 1 directory, 4 files $ cat lib/lib.py def func(): return 'func in lib' $ cat lib/main.py from .lib import func if __name__ == '__main__': print(func()) $ cat setup.py from setuptools import setup setup( name='lib', packages=['lib'] ) $ pex . -e lib.main -o lib.pex $ ./lib.pex func in lib
NB:
.
в командной строке pex есть бит, указывающий pex на setup.py этого каталогаПодайте проблему с pex для поддержки набора файлов вместо require / setup.py. Вы можете сделать это здесь.
Подавайте вопросы о штанах, чтобы поддержать те требования, которые у вас есть, и которые они не решают. Вы можете сделать это здесь
Как приверженец штанов, я могу сказать, что мы работаем над тем, чтобы сделать штаны проще и удобнее в использовании, чтобы ни один проект не был слишком маленьким. Ты должен быть способен pip install pantsbuild.pants.backend.python && touch pants.ini
и работать в репо только для Python, но мы не там сегодня.