写在前面:要保证任何python环境都能运行项目,需求就是把该项目的所有依赖都提取出来。现在有两种方法。

1. 使用工具

一个很好用的打包工具:pyinstaller

1.1 直接pip install pyinstaller






1.2 用法:

很简单,cd到目标项目的.py目录下,运行pyinstaller -F file.py -F:表示只生成一个可执行文件,如果不加则会在dist文件夹下生成很多文件和一个可执行文件。

cd slurm_export/src
pyinstaller -F export.py

successfully之后,当前目录下会生成两个文件夹,一个dist,一个build,我们所需要的文件在dist里面。
直接运行就可以了

./export

为啥不用这个方法呢,因为在python的包中,有的完全是python的,而有的并不是纯python的,那么接下来介绍方法二,如何安全的提取打包。

2. 简单粗暴的找到路径,复制下来放入项目中

2.1 那么路径在哪呢?

我是从pycharm中找到了蛛丝马迹



然而当你进入bin目录下时,你会发现毛都没有,根本没有python的文件夹,所以路径根本不在这。

那么会在哪呢,大家可能会想到 /lib这个目录,这里存放着系统最基本的动态链接共享库,其作用类似于Windows里的. dll文件。几乎所有的应用程序都须要用到这些共享库。


果然,这里有很多我们需要的安装包,但是,你会发现怎么不全?怎么有的有,有的没有?因为这里面放的都是python官方的库,我们自己安装的库并不在这,而是在 site-packages

cd site-packages



现在全都找到了,如果你可以打开.py文件,那么路径更好找,直接cd过去就ok了:




回到之前我们的疑问:怎么判断安装包是不是纯python的呢?

find file_name/



这里面的.so文件就不是python的文件,.py/.pyc是。所以这种包无法打包,只能到目标环境下手动安装。
找到我们需要的包,cp出去放到sys.path可以找到的路径下就可以了(放到你要run的那个文件夹里),结果如下:



3. 检测

重新创建一个虚拟环境,运行下export.py查看能否正常运行就ok了。