創建虛擬環境報錯
方法一:
1.轉載https://www.jianshu.com/p/60c46e982f18
在ubuntu16.04下使用系統自帶的python3.5創建虛擬環境一切正常,但當我安裝了python3.6后,安裝虛擬環境會報錯,下面是遇到的報錯和解決辦法。
當安裝完pyhton3.6后,用python3.6創建虛擬環境
~# python3 -m venv myenv
會報如下錯誤:
Error: Command '['/root/myenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
再嘗試用virtualenv命令創建虛擬環境,並選擇python3.6
~# virtualenv -p python3.6 myenv01
會報如下錯誤:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/virtualenv.py", line 22, in <module> import zlib ModuleNotFoundError: No module named 'zlib'
此時發現是缺少zlib,所以要安裝zlib
sudo apt-get install zlib1g-dev
安裝成功后,需要重新安裝python3.6,即在官網下載的python3.6目錄下執行安裝語句:
./configure
make
sudo make install
此時再次創建虛擬環境
~# python3 -m venv myenv
不會報錯,成功創建!
方法二(推薦):
症狀
使用 venv 創建虛擬環境失敗,並報錯如上。
python -m venv ll_venv
背景
Ubantu16.04
三個python版本: python2.7 、python3.5、python3.6
python 默認為 python3.6
解答
缺少依賴包,安裝 python3.6-venv 即可。
sudo apt-get install python3.6-venv
解決歷程
-
首先是到網上查找解決方法,看了兩篇,覺得不合適,但也受到了啟發,開始自己想辦法。
-
受到別人的啟發,我先用 virtualenv 創建包,能創建成功,而別人的卻無法創建,所以我未選擇它的答案。
virtualenv ll_venv source ll_venv/bin/activate pip list
-
使用 python3.5 創建虛擬環境,創建失敗,輸出同樣的報錯。但是多了解決提示:
python3.5 -m venv ll_venv # 報錯,但有提示 sudo apt-get install python3-venv python3.5 -m venv ll_venv python -m venv ll_venv # 仍然報錯,內容未變
於是按提示,安裝了 python3-venv。再次使用 python3.5 創建虛擬環境成功,但是python3.6仍然報錯不變。
-
猜想:python3.5 安裝個 python3-venv 就行了,python3.6 是不是要安裝 python3.6-venv?試試...
sudo apt-get install python3.6-venv
# 安裝成功
python -m venv ll_venv
成功安裝 python3.6-venv !用 python3.6 創建虛擬環境也成功了。
思考
應該是每個 python3 版本都有各自的 venv,python3-venv 默認安裝的應該是 python3.5-venv,但系統的 python3 默認為 python3.6。那只能解釋為 python3-venv 由遠程解釋,並解釋為 系統已安裝的python3 的最低版本。故要在有多個python3版本的系統中指定python3版本的 venv,最好手動指定python3版本來安裝。