pyenv下python依赖的路径和打包项目
写在前面:要保证任何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了。