解决思路:获取本机已安装的第三方包的信息,包括包名、版本,然后通过读取这些信息将相关包(以及依赖包)下载到本地,再上传包到服务器上,批量安装。
问题背景:测试环境在内网linux服务器,无法联网故无法使用pip直接安装python第三方库
说下我的情况,代码是在本地windows上编写好的,所以本机的环境是OK的。我想把脚本上传到linux服务器上执行,遇到了无法直接联网安装python第三方库的问题。
之前一直用笨方法,就是需要的包一个一个到官网下载:https://pypi.org/,然后离线上传手动执行python setup.py install执行。遇到依赖包的报错不断地重复下载、上传、执行命令安装,这样效率十分低。
后来在博客中看到可以批量下载、上传、执行的方法,记录一下,参考来源:https://www.cnblogs.com/sunyllove/p/9888955.html
1、在本机执行:pip freeze > E:\PythonPro\all_new.txt ,获取本机安装的python包信息
到对应的目录可以看到第三方包都被打印出来了。
2、批量下载第三方包:pip download -d E:\PythonPro\new_packages -r E:\PythonPro\all.txt
3、把步骤2中所有包和步骤1中txt文件上传到服务器上,批量安装:
pip install --no-index --find-links=/home/jenkins/new_packages/ -r /home/jenkins/all.txt
(服务器上有python2和python3,故我的命令是:
python3 -m pip install --no-index --find-links=/home/jenkins/new_packages/ -r /home/jenkins/all.txt)
具体目录以自己的为准。
下载和安装单个包的情况:
1、下载命令:pip download -d E:\PythonPro\new_packages package_name
2、安装命令:pip install --no-index --find-links=/home/jenkins/new_packages/ package_name