如何直接运行Python egg文件而不安装它们?

36

能否像在Java中运行jar文件那样直接运行Python egg文件?

例如,在Java中可以这样做:

$ java -jar jar-file
4个回答

18

Python egg是“一种可以导入的单文件分发格式”,通常用于打包 Python 包。

只要你知道包的名称并且它在你的路径中,你就可以导入 egg 中的包。

你可以使用"-m"选项和包名来执行一个包。

然而,当执行 Python 包时,它们通常不会做任何事情,你可能会遇到错误。你可以使用"-c"选项来运行代码。(有关命令行选项的详细信息,请参见http://docs.python.org/using/cmdline.html)。

> python -m sphinx
sphinx is a package and cannot be directly executed


> python -c "import <package in an egg>; <function>();"



> python -c "import sphinx; print sphinx.package_dir"
C:\Python26\lib\site-packages\sphinx-0.6.1-py2.6.egg\sphinx

16

在Python 2.6及以后版本中,您可以使用python some.egg命令来执行一个名为__main__的模块。

对于早期版本的Python,您可以使用PYTHONPATH=some.egg python -m some module命令,并且将从蛋文件(some.egg)中运行somemodule作为主模块。(注意:如果您使用Windows系统,则需要单独执行SET PYTHONPATH=some.egg命令。)


我正在使用Python 3,我不明白如何添加一个名为__main__的模块以及在哪里添加,你有例子吗? - Eric Bellet
你添加Python项目中的任何其他模块的方式都是一样的:通过添加一个同名的.py文件,然后在setup参数中列出它。 - PJ Eby

6
例如,如果你想导入suds模块,该模块可用作.egg文件:
egg_path='/home/shahid/suds_2.4.egg'

sys.path.append(egg_path)

import suds
#... rest of code

5
@Mark在哪里可以看到这个?问题是“如何直接运行Python egg文件而无需安装它们?”,这个答案是有效的。 - Adham
@Adham - 问题中的Java示例来自命令行而不是Java内部。 - mmmmmm
1
@Mark,您根据示例推断出问题的含义。问题中没有提到“命令行”。 - Adham
@Adham - 这是唯一有用的解释 - jar文件可以从命令行运行。 - mmmmmm
2
@Mark 从命令行运行是你对问题的解释。当问题明确询问“如何直接运行Python egg文件而无需安装它们?”时,不需要解释。 - Adham

1

Python Egg文件直接执行步骤

假设您有一个Egg文件和驱动程序文件,可以通过以下命令运行。

PYTHONPATH=eggfilename.egg python driverfile.py

上述命令用于在不安装Python代码中的egg文件的情况下运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接