可以将所有导入依赖打包到Python脚本中吗?
我的Python脚本需要用到几个模块来运行。但是在某些系统上,这些模块可能没有安装。那么有没有办法让这个脚本独立运行,不需要额外安装模块呢?也许可以把所有需要的模块直接放在脚本里?
2 个回答
-1
你可以看看关于 Python Eggs 的介绍,链接在这里:http://mrtopf.de/blog/en/a-small-introduction-to-python-eggs/
0
在一个独立的脚本中包含所有必要的模块可能会非常复杂,而且看起来也不太好。不过,你可以把模块和你的脚本一起分发(比如打包成一个压缩文件)。
大多数模块如果和你的脚本放在同一个文件夹里,而不是放在通常的site-packages文件夹里,应该也能正常工作。根据sys.path
的顺序,系统会优先加载它自己安装的模块,如果找不到,那就会自动导入你提供的模块。
如果你觉得这样做更整洁,你也可以把依赖的模块打包成一个zip文件,然后把这个zip文件添加到路径中。
不过,有些模块就没那么灵活了。比如一些需要先编译的扩展(像C语言写的扩展),这些模块就只能在特定的平台上使用。
在我看来,最干净的解决办法还是使用distutils来正确打包你的脚本,并定义好依赖关系,然后写一个安装程序来安装你打包中缺少的依赖,或者使用pip
来安装。