问题与背景
在不使用ananconda的前提下,python的venv虚拟环境,可以为项目提供一个干净的空间,没有多余的依赖,需要依赖可以自行安装,给开发提供了极大的便利,那么如何移植呢?一般根据现场的情况,以有无网络为分水岭,可以梳理出一份断网的解决方案,通吃所有情况。
参考资料
https://www.cnblogs.com/ybjourney/p/12521070.html Python离线项目迁移部署
https://www.cnblogs.com/randomlee/p/11189867.html 使用 pip wheel 实现 Python 依赖包的离线安装
解决方案
虚拟环境中的依赖都放在你的虚拟环境目录下,可以将这些依赖打成whl依赖包,导出,然后移植到部署机器上,再安装一遍,就可以实现项目的迁移了。
1.导出依赖文件的目录。启动虚拟环境之后,在项目根目录下执行依赖文件的索引文件导出的命令。
pip3 freeze > requirements.txt
2.将所有的依赖文件,以whl文件的格式导出。
pip wheel --wheel-dir=./tmp/packages -r requirements.txt
3.将./tmp/packages 下的一堆whl文件打包,跟requirements.txt文件一起放到部署机器的项目目录下,解压。
4.激活部署项目的虚拟环境
5.激活之后,将whl文件进行“安装”,命令如下:
pip3 install --no-index --find-links=tmp/packages -r requirements.txt
# 或者
pip3 install --use-wheel --no-index --find-links=tmp/packages -r requirements.txt
6.安装之后确认,可以是虚拟环境中pip list确认 也可以是 pip freeze检验。