一、应用场景
比如:对于数据安全要求比较严格的机房,服务器是不允许上网的。那么我现在开发了一套python程序,需要一些模块,怎么运行?
二、离线包制作
有2个解决方案:
1. 使用requirement.txt离线安装打包好的包whl
请参考链接:
https://blog.csdn.net/wangyaninglm/article/details/54177720
这种方案,我一直没有测试成功,为什么?
因为某些whl文件,使用pip download下载不来,提示not found
好吧,我果断放弃了!
2. 使用虚拟环境virtualenv
我测试了一下,运行正常!
注意:必须保证服务器,已经安装好了python3和pip3。
如果是ubuntu系统,需要离线安装,请参考链接:
https://www.cnblogs.com/xiao987334176/p/9875480.html
下面详细介绍整个过程!
虚拟环境virtualenv
环境说明
系统是 ubuntu-16.04.5-server-amd64,默认已经安装好了python3,版本为3.5.2
已经安装好了python3-pip,版本为8.1.1
sudo apt-get install -y python3-pip
如果提示
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
使用以下命令处理
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
清理缓存,也就是/var/cache/apt目录下的deb包
apt-get clean all
安装virtualenv
sudo pip3 install virtualenv
提示:
You are using pip version 8.1.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
千万不要执行 pip install --upgrade pip
否则会造成pip崩溃!
创建虚拟目录
sudo mkdir /virtualenvs
创建虚拟环境
进入虚拟目录,创建虚拟环境venv
注意:下面的红色位置,需要根据自己的环境修改
cd /virtualenvs sudo /usr/local/bin/virtualenv -p /usr/bin/python3 --no-site-packages venv
语法说明:
-p 指定python版本
–no-site-packages表示不包括系统全局的Python安装包,这样会更令环境更干净
指定豆瓣源
#创建目录 mkdir ~/.pip # 编辑配置文件 vi ~/.pip/pip.conf
内容如下:
[global] index-url = http://pypi.douban.com/simple trusted-host = pypi.douban.com
安装相关模块
比如安装模块paramiko
sudo /virtualenvs/venv/bin/pip3 install paramiko
打包虚拟环境
比如打包venv
sudo tar zcvf venv.tar.gz venv
三、离线测试
环境说明
系统是 ubuntu-16.04.5-server-amd64,默认已经安装好了python3,版本为3.5.2
拷贝文件到根目录
插入U盘或光盘,将venv.tar.gz复制到根目录下,解压
sudo mkdir /virtualenvs sudo tar zxvf venv.tar.gz -C /virtualenvs/
进入python测试
/virtualenvs/venv/bin/python
导入模块 paramiko,实例化SSHClient
>>> import paramiko >>> paramiko.SSHClient() <paramiko.client.SSHClient object at 0x7f549e9aca90>
如果没有报错,说明成功了