2010-09-21 79 views
2

我知道有一种方法可以导入与python压缩文件中的模块。我在一个zip文件中创建了一种自定义的python包库。有没有办法从bash运行zip文件中的python脚本?

我想把我的“任务”脚本放在这个包中,那些正在使用库。然后,用bash,我想在zip文件中调用所需的脚本,而不用提取zip。

目标是当我想运行我的脚本时,只有一个zip文件在指定的文件夹中移动。

回答

6

我终于找到了一种方法来做到这一点。如果我创建一个zip文件,我必须在zip的根目录下创建__main__.py。因此,有可能推出主打内线的脚本,如果从庆典用下面的命令调用:

python myArchive.zip

此命令将运行__main__.py文件! :)

然后,我可以创建.command文件以启动具有适当参数的脚本。

如果您需要传递参数,您还可以在__main__.py文件中添加一些代码,以便为您提供更多的灵活性。

例如:python __main__.py buildProject

的参考文档是在这里:https://docs.python.org/2/library/runpy.html

+0

太好了。我以为你想在zip压缩文件中任意调用“any”脚本。 – Rod 2010-09-21 18:53:35

+0

基本上这是我想要的,但没有解压缩文件。所以这是我发现的唯一途径。 – ForceMagic 2010-09-21 19:58:41

3

看看zipimport。它应该从安装直接工作。你可能需要做一些工作来使pythonpath指向你的zip文件/目录。

此模块增加了导入 Python模块的能力(*的.py,*的.py [CO])和来自ZIP格式档案 包。 通常不需要明确使用 zipimport模块;它是 自动使用的内置 导入机制的sys.path项目 是ZIP档案的路径,即ZIP档案的路径。

+0

我的意思是为了创建一个.command文件,是启动所需的脚本运行与bash命令Zip文件里python脚本。也许这是不可能没有python? – ForceMagic 2010-09-21 14:34:43

+0

我不知道任何可以直接在zip压缩文件中调用脚本的东西。可悲的是,你必须依靠python来读取防止你使用__main__ ==“__main__”成语的python脚本。 – Rod 2010-09-21 15:11:59

+0

好的,非常感谢! 相反,我会尝试找到一些东西来创建一个像我的python文件一样的应用程序。因为在当前的情况下,我只需要一个文件,我的用户可以点击并使用其模块运行脚本。 我在考虑py2app,因为我在Mac上。 – ForceMagic 2010-09-21 15:20:19

相关问题