Python離線環境

1、應用場景

好比:對於數據安全要求比較嚴格的機房,服務器是不容許上網的。那麼我如今開發了一套python程序,須要一些模塊,怎麼運行?html

 

2、離線包製做

有2個解決方案:python

1. 使用requirement.txt離線安裝打包好的包whlubuntu

請參考連接:
https://blog.csdn.net/wangyaninglm/article/details/54177720緩存

這種方案,我一直沒有測試成功,爲何?安全

由於某些whl文件,使用pip download下載不來,提示not found服務器

好吧,我果斷放棄了!ide

 

2. 使用虛擬環境virtualenvpost

我測試了一下,運行正常!測試

注意:必須保證服務器,已經安裝好了python3和pip3。ui

若是是ubuntu系統,須要離線安裝,請參考連接:

http://www.javashuo.com/article/p-tofkynlp-bn.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

 

3、離線測試

環境說明

系統是 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>

若是沒有報錯,說明成功了

相關文章
相關標籤/搜索