我对Python中的egg文件有疑问。
我有很多由代码组织的Python代码,我正在尝试创建egg文件。 我正在关注instructions,但它们很常见。
根据它,似乎我需要一个setup.py文件。
java -jar <jar file>
那样解压缩呢?答案 0 :(得分:72)
您正在阅读错误的文档。你想要这个:https://setuptools.readthedocs.io/en/latest/setuptools.html#develop-deploy-the-project-source-in-development-mode
在Python的标准库文档here中的distutils文档中介绍了创建setup.py。主要区别(对于蟒蛇蛋)是来自import setup
的{{1}},而不是setuptools
。
是的。那应该是对的。
我不这么认为。 distutils
个文件可以依赖于版本和平台。您可以打开鸡蛋(它们应该只是zip文件)并删除留下pyc
文件的.py
文件,但不建议这样做。
我不确定。那可能是“发展模式”。或者您正在寻找一些“py2exe”或“py2app”模式?
答案 1 :(得分:30)
对于#4,使用适用于您的应用程序的jar文件启动java的最接近的事情是Python 2.6中的新功能executable zip files and directories。
python myapp.zip
其中myapp.zip是包含__main__.py
文件的zip文件,该文件作为要执行的脚本文件执行。您的包依赖项也可以包含在文件中:
__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__'
是否可以使用命令行。)
egg文件只是zip文件,因此您可以使用zip工具将__main__.py
添加到鸡蛋中,并使其在python 2.6中可执行,并像python myapp.egg
一样运行,而不是上面的咒语设置了PYTHONPATH环境变量。
有关可执行zip文件的更多信息,包括如何使用shebang直接执行这些文件,可以在Michael Foord's blog post on the subject找到。
答案 2 :(得分:10)
我认为你现在应该使用python wheels来分发而不是鸡蛋。
车轮是python发行的新标准,旨在实现 替换鸡蛋。支持以pip&gt; = 1.4和setuptools&gt; = 0.8提供。