以python3.6為例
①安裝virtualenv:
#pip安裝之后在D:\Python36\Scripts目錄下可以看到多了一個virtualenv.exe可執行文件
pip install virtualenv
②創建一個虛擬環境:
# venvname為虛擬環境名,會在當前目錄下創建一個虛擬環境
virtualenv [venvname]
ps:當系統存在多個python版本時,直接執行這個命令會使用系統默認的python版本創建虛擬環境(windows下系統環境變量path中最靠前的python為默認版本),要指定python版本有以下2種方法:
1.virtualenv -p指定python解釋器
#windows下路徑為python解釋器的完整路徑,mac下路徑為python安裝目錄路徑(執行virtuaenv命令即可查看各命令選項),如下為windows示例
virtualenv -p D:\Python36\python.exe test1
2.將D:\Python27\Scripts\目錄下的virtualenv.exe更改名稱,比如加上版本號區分:virtualenv2.exe
③啟動&退出虛擬環境:
# 啟動虛擬環境時需要先切換到虛擬環境的Scripts目錄下再執行如下命令。
activate
#退出虛擬環境
deactivate
ps:mac下這個命令為source venv/bin/activate
以上虛擬環境的安裝和創建就ok了,每次激活后就可以正常使用,接下來是虛擬環境在無網環境下的移植(切記,A和B 2個服務器上的python版本一定要一致!!!不僅是版本號,還有64bit或者32bit這些)
A----->B(將A機器上的虛擬環境在無網情況下移植到B)
A機器上已有虛擬環境:
① 生成安裝包列表文件:
ps:這個命令在非虛擬環境也可以使用,可以生成pip list獲取的所有(除去python自帶的)包列表
# 安裝包列表保存到文件packages.txt中,文件名是自己定義,如果文件已經存在會被覆蓋更新,不存在會自動創建
#需要在虛擬環境目錄下執行這個命令(無需activate激活),否則生成的文件內容是系統python版本使用的安裝包列表
pip freeze >packages.txt
② 將包列表文件中的所有包下載到文件夾下:
#savetest\whls為保存安裝包的路徑,不存在會被創建,packages.txt為前一步生成的包列表文件
pip download -d [savetest\whls] -r [packages.txt]
B機器上有沒有虛擬環境都可以
無虛擬環境直接在python環境下做以下操作
有虛擬環境則在虛擬環境下做以下操作,
③ 將①和②中生成的包列表文件和安裝包文件夾復制到B機器上
④ 依據包列表文件以及安裝包文件夾來安裝包:
#savetest\whls為安裝包文件夾路徑,packages.txt為包文件列表(注意相對路徑和絕對路徑的選擇)
pip install --no-index --find-links=[savetest\whls] -r [packages.txt]
ps:如果是在有網絡的情況下要移植環境,pip install -r [packages.txt] 即可
常見問題:
1.一段時間不使用虛擬環境,在使用時報錯了,解決如下
2.今天遷移到無法訪問外網的環境折騰了一天,各種報錯,下載pip和setuptools的wheel失敗什么的,就算忽略這2個的安裝,在讀文件安裝包的時候也會報錯說找不到該包,最后發現是本地的python是32bit的,新環境裝的是64bit的!!!!!具體問題如下:
①如果是遷移到虛擬環境出現了以下問題
解決方案:
如果需要pip和setuptools這些工具,可以在虛擬環境下手工安裝
②提示文檔中的包,在包文件夾下找不到,但是檢查是有的。后來發現是因為本地是python3.6.5-32bit,但是要遷移的目標服務器是python3.6.5-64bit,,后來重裝了python就好了
https://www.cnblogs.com/yy-cola/p/9764822.html
linux下也相似,參考:
https://www.cnblogs.com/wt11/p/6216508.html