2017-09-23 154 views
0

我想使用类似urllib.request的Python模块,但将所有模块的依赖关系放在文件中,我可以在计算机上使用它们,而无需安装整个Python。如何将Python模块及其依赖关系复制到文件中

是否有一个模块或工具可用于将特定模块复制到文件中,并且它是依赖关系,而无需通过整个脚本并手动复制它。我正在使用Python 3.

回答

1

有很多选项可以做这种事情。首先想到的是python内置的zip支持;如果您的zip中有__main__.py,则在zip文件上运行python将以脚本的形式运行它。简单的(纯python,非操作系统相关的)软件包应该简单地嵌入到这样一个zip文件中。

或者,诸如cx_Freeze之类的工具可以按照操作系统特定的方式打包包含解释器的依赖项的脚本。这通常会导致更大的占用空间,因为结果包也包含解释器,但允许在本地组件中包含更复杂的依赖项;我不确定这是可能的与python的zip导入功能。

+0

我对第一部分并不熟悉。如果我把它放入一个zip文件,它会像普通模块一样运行? '__main __。py'只需要是普通模块包含的内容?你知道我在哪里可以找到这方面的文件吗?感谢这个可能的解决方案(+1)。 – Simon

+0

我真的不知道这个文档在哪里住,对不起。 – Anonymouse

+1

作为一个实验,我创建了一个virtualenv,在其中安装了请求,将'venv/lib/python3.5/site-packages'中的所有内容复制到zip文件的根目录下,放入一个简单的'__main __。py'('导入请求; print(requests.get(“http://ix.io/M3M”).text)'),并试图在没有可用请求的python中运行它。它的工作:)我实际上不知道这些功能,但它似乎工作很神奇。 – Anonymouse

1

使用容器技术。例如,Docker让您可以将代码与依赖关系移植到您想要的任何计算机上,而无需在计算机中安装任何新东西,同时也节省了大量时间。

+1

感谢您的答案,但我决定在这种情况下其他答案更有用。 – Simon