已有環境
- CentOS 6
- Python 3
- Django 1.11
主要用到下面三個命令:
# 導出依賴
pip freeze > requirements.txt
# 按照依賴下載離線包
pip download -d packagesDir -r requirements.txt
# 安裝離線包
whl包、tgz包
單個包、目錄下的包
pip install --no-index --find-links="packages_dir" -r requirements.txt
提前準備
(1)requirements.txt 依賴文件 pip freeeze > requirements.txt
(2)離線包下載(有坑)
下載命令: pip download -d /dir/of/packagesDir -r requirements.txt
注意,下面2條很是關鍵!!!!:
- 一定要注意平臺,windows離線下載的離線包只適用於windows,macOS、Linux同理。
- CentOS 6 和CentOS 7的也不一樣。前者下載的離線包也不適用後者,不然離線安裝的時候會報錯。
上面兩點對應上後,再下載離線包,然後轉移到內網機器上。
離線主機安裝Python3
因爲系統自帶的是Python2.6,但是要安裝Python3適用,而且不能覆蓋安裝Python2.
已經測試過,安裝Python3 然後適用命令 python3 manage.py runserver
, 會出現一系列問題。 因此採用 pyenv
工具安裝不同的Python解釋器,這裏安裝Python3.。
此處跳開 pyenv
的安裝步驟, 假定已經使用 pyenv安裝上 Python3.
安裝離線包
離線包所在目錄: offlinePackages
安裝命令:pip install --no-index --find-links="offlinePackages" -r requirements.txt
就完成了項目需要的離線包安裝,接下來可以正常使用類似django-admin
的命令了。
最後,需要修改django的配置文件等,數據庫密碼主機ip等。
其它
- 嘗試過將venv虛擬目錄一通打包,然後
source /venv/bin/active
但是不管用,還是上述方法解決了問題。 - 一定要有一個Python解釋器存在,不然虛擬目錄激活後也用不成。
附:離線安裝pyenv方法
有網的主機上先下載
1、 使用這條命令主要是偷懶,方便好用: curl https://pyenv.sh | bash
, 該步驟得到 .pyenv
目錄,也就是pyenv工具的目錄,後續需要打包該目錄,並轉移到無網主機上。
2、還是有網主機上,寫入pyenv的環境變量:
$ echo 'export PYENV_ROOT="$HOME/.pyenv"'>> ~/.bashrc #然後需要修改環境變量,使用 Bash Shell 的輸入
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"'>> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
3、安裝想要的Python版本,比如3.6.5
:
pyenv install 3.6.5
如果報錯,那就是一些系統級別的依賴沒有安裝好,可以試試下面這些(其實是安裝Python的依賴):
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel
yum -y install gcc
4、 安裝成功後, 打包pyenv 的目錄: tar -czf pyenv.tgz .pyenv
,然後上傳到無網主機上安裝。注意配好pyenv環境變量。
( 寫到這裏,我發現可以使用另外一個思路來離線安裝:在pyenv安裝好後,直接切換到你想要的Python版本,此時pip也對應切換,這時使用pip直接安裝 requiremans.txt裏面的包,因爲這些包都是安裝在.pyenv目錄下的的。然後直接打包上傳到無網機器安裝。 不過這樣的缺點是:事先安裝的包是全局性的,如果後續還安裝新的、別的版本的包,會導致混亂,所以得確保當前pyenv是使用固定的包版本情況下。
無後患的做法是:
1、使用pyenv切換Python版本;
2、創建虛擬目錄;
3、激活虛擬目錄;
4、安裝離線包——這個時候,離線包纔是安裝到了隔離開的環境裏面,也是局部性的包。
)