Как создать файл яйца Python
У меня есть вопросы о файлах яиц в Python.
У меня есть код Python, организованный пакетом, и я пытаюсь создать файлы с яйцами.
Я следую инструкциям , но они очень распространены.
В соответствии с этим, похоже, мне нужен файл setup.py.
- Не могли бы вы рассказать мне, что мне нужно внести в файл setup.py и где он должен проживать?
- Я предполагаю, что достаточно создать setup.py, а затем запустить setup.py bdist_egg для получения файла яйца. Не могли бы вы подтвердить?
- Можно ли включать только файлы .pyc в файл яйца?
- Имея файл .egg, как я могу просто запустить код из него без распаковки, например
java -jar <jar file>
?
Ответы
Ответ 1
Вы читаете неправильную документацию. Вы хотите это: https://setuptools.readthedocs.io/en/latest/setuptools.html#develop-deploy-the-project-source-in-development-mode
-
Создание setup.py описано в документации distutils в документации стандартной библиотеки Python здесь. Основное отличие (для яиц Python) заключается в том, что вы import setup
из setuptools
, а не distutils
.
-
Ага. Это должно быть правильно.
-
Я так не думаю. pyc
файлы могут быть в зависимости от версии и платформы. Вы можете открыть яйцо (это должны быть только zip файлы) и удалить файлы .py
оставляя файлы .pyc
, но это не рекомендуется.
-
Я не уверен. Это может быть "Режим разработки". Или вы ищете какой-нибудь режим "py2exe" или "py2app"?
Ответ 2
Для # 4, ближайшей к запуску java с файлом jar для вашего приложения является новая функция в Python 2.6, исполняемые zip файлы и каталоги.
python myapp.zip
Где myapp.zip - это zip, содержащий файл __main__.py
, который выполняется как файл script, который должен быть выполнен. Ваши зависимостей пакетов также могут быть включены в файл:
__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
И python будет запускать __init__.py
(вы должны проверить, что __file__=='__main__'
в вашем приложении для использования в командной строке).
Яйцо файлы - это только zip файлы, поэтому вы можете добавить __main__.py
в свое яйцо с помощью zip-инструмента и сделать его исполняемым в python 2.6 и запустить его как python myapp.egg
вместо вышеупомянутого заклинания, где переменная среды PYTHONPATH установлен.
Более подробную информацию об исполняемых zip файлах, в том числе о том, как сделать их непосредственно исполняемыми с помощью shebang, можно найти на Michael Сообщение блога Foord по теме.
Ответ 3
Думаю, вам следует использовать колесики python для распространения вместо яйца.
Колеса являются новым стандартом распространения питона и предназначены для замените яйца. Поддержка предлагается в pip >= 1.4 и setuptools >= 0.8.