Как создать файл яйца Python

У меня есть вопросы по поводу яичных файлов в Python.

У меня есть много кода Python, организованного по пакетам, и я пытаюсь создать яйца файлы. Я следую инструкциям, но они очень распространены.

В соответствии с этим, мне кажется, мне нужен файл setup.py.

  1. Подскажите, пожалуйста, что мне нужно поместить в файл setup.py и где он должен находиться?
  2. Я полагаю, достаточно создать setup.py, а затем запустить "setup.py bdist_egg" для получения файла яйца. Не могли бы вы подтвердить?
  3. Можно ли включить в файл egg только файлы.pyc?
  4. Наличие файла.egg, как я могу просто запустить код с него без распаковки, как java -jar <jar file> делает?

3 ответа

Решение

Вы читаете неправильную документацию. Вы хотите это: https://setuptools.readthedocs.io/en/latest/setuptools.html

  1. Создание setup.py описано в документации distutils в документации стандартной библиотеки Python здесь. Основное отличие (для яиц питона) это вы import setup от setuptoolsне distutils,

  2. Ага. Это должно быть правильно.

  3. Я так не думаю. pyc Файлы могут быть в зависимости от версии и платформы. Вы можете открыть яйцо (это должны быть только zip-файлы) и удалить .py оставление файлов .pyc файлы, но это не рекомендуется.

  4. Я не уверен. Это может быть "Режим разработки". Или вы ищете какой-нибудь режим "py2exe" или "py2app"?

Для #4 наиболее близким к запуску java с файлом jar для вашего приложения является новая функция в Python 2.6, исполняемые zip-файлы и каталоги.

python myapp.zip

Где myapp.zip - это почтовый индекс, содержащий __main__.py файл, который выполняется как файл сценария, который будет выполнен. Ваши зависимости пакета также могут быть включены в файл:

__main__.py
mypackage/__init__.py
mypackage/someliblibfile.py

Вы также можете выполнить яйцо, но заклинание не так приятно:

# Bourn Shell and derivatives (Linux/OSX/Unix)
PYTHONPATH=myapp.egg python -m myapp
rem Windows 
set PYTHONPATH=myapp.egg
python -m myapp

Это помещает myapp.egg в путь Python и использует аргумент -m для запуска модуля. Ваш myapp.egg, скорее всего, будет выглядеть примерно так:

myapp/__init__.py
myapp/somelibfile.py

И питон побежит __init__.py (вы должны проверить это __file__=='__main__' в вашем приложении для использования в командной строке).

Яичные файлы - это просто zip-файлы, так что вы можете добавить __main__.py к вашему яйцу с помощью zip-инструмента и сделайте его исполняемым в Python 2.6 и запустите его как python myapp.egg вместо приведенного выше заклинания, где установлена ​​переменная окружения PYTHONPATH.

Дополнительную информацию об исполняемых zip-файлах, в том числе о том, как сделать их непосредственно исполняемыми с помощью shebang, можно найти в блоге Майкла Фурда на эту тему.

Я думаю, что вы должны использовать колеса Python для распространения вместо яйца сейчас.

Колеса - это новый стандарт распространения Python, предназначенный для замены яиц. Поддержка предлагается в pip >= 1.4 и setuptools >= 0.8.

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