2017-07-08 40 views
1

我刚刚完成了一段漂亮的代码。它使用了一些未预先安装在python中的模块。现在的问题是,要让用户运行,必须安装系统所需的所有模块。
我该如何从这种痛苦中拯救用户?
有没有什么办法可以只分析正在使用的模块中的那些函数,并以某种方式将它们与我写的代码打包在一起?
我现在在做的事情之一就是编写一个辅助外壳脚本来减轻用户的工作量。但是再次安装模块可能会给各种系统带来痛苦和错误。我无法处理。 请给我一些建议。
谢谢模块依赖的python代码在没有模块的机器上运行

编辑1:我有点担心安装整个库的复杂性。我正在为python(后台在C/C++中实现)的cv2模块工作,我不能要求用户在一天结束时安装整个库,我只是使用一堆函数它。
PS:我花了几个小时来安装OpenCV

+0

编写setup.py以包含所有依赖项?所以所有模块都可以安装在一个命令中。 –

回答

0

假设你有一个模块XYZ

通常你会安装,使用PIP

pip install xyz 

出于某种原因,你没有访问在它想要运行的环境中这样做,所以改为从github克隆/下载xyz存储库到您的应用程序中(最好作为git子模块)

xyz repo将prob干练地看这样的事情。

XYZ repo (dir) 
- xyz (dir) <-- this is where the actual module is 
- readme.md 
- setup.py 

现在你的应用程序目录看起来是这样的:

My app (dir) 
- XYZ repo (dir) 
- __init__.py 
- myapp.py 

为了能够在myapp.py进口某某,你需要一个符号链接添加到的XYZ回购

ln -s XYZ\ Repo/xyz xyz 
模块目录

您的应用程序现在看起来是这样的:

My app (dir) 
- XYZ repo (dir) 
- xyz 
- __init__.py 
- myapp.py 

你现在可以在代码中导入xyz。免责声明:这只适用于纯python库,如果它具有c依赖性,它们将需要在安装期间构建,并且您需要访问pip或至少自己运行构建脚本。 还必须以相同的方式安装xyz软件包的任何依赖项

+0

谢谢。但我并不担心安装整个图书馆的复杂性。我正在为python(后台在C/C++中实现)的cv2模块工作,我不能要求用户在一天结束时安装整个库,我只是使用一堆函数它。 –

+0

您需要使用类似'cx_freeze'的东西,这会将整个脚本和所有依赖关系打包成一个小文件。完全自足。我已经使用cx来为Windows机器制作.exe的。不知道还有什么可以运行的包,但确定任何东西。尝试谷歌“移植”蟒蛇,看看发生了什么 – Joe