一. 不同用戶下配置virtualenvwrapper的問題 問題描述: 安裝virtualnev和virtualnevwrapper之後,在.bashrc進行virtualenvwrapper的相關配置後重新載入.bashrc文件時報錯. 報錯內容大致如下: 也就是說系統檢測當前pip下的安裝軟體 ...
一. 不同用戶下配置virtualenvwrapper的問題
問題描述:
安裝virtualnev和virtualnevwrapper之後,在.bashrc進行virtualenvwrapper的相關配置後重新載入.bashrc文件時報錯.
報錯內容大致如下:
/usr/bin/python: No module named virtualenvwrapper virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenvwrapper has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is set properly
也就是說系統檢測當前pip下的安裝軟體中查找不到virtualenv和virtualenvwrapper.
之所以會出現這樣的問題有可能是以下幾條原因:
- 在安裝虛擬環境時, 可能是在使用普通用戶下加了sudo命令進行安裝了virtualenv和virtualenvwrapper.
使用命令 pip list 進行查看,是否安裝成功, 如果使用了pip3 進行安裝虛擬環境要使用 pip3 list進行查看.
如果當前用戶下pip已安裝軟體中沒有看到 virtualenv 和 virtualenvwrapper 基本上就是以上的原因
解決方法:
- 如果是普通用戶不要加sudo進行安裝
pip install virtualenv
pip install virtualenvwrapper
安裝之後使用pip list可以查看到已經成功的安裝了兩個軟體, 接下來進行配置即可配置.bashrc
這時要在當前用戶的目錄下修改.bashrc, 意思就是root用戶和普通用戶的~目錄下都存在一個.bashrc配置文件
註意!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
使用不同的用戶執行 vim ~/.bashrc 這句命令時 其實是操作了不同的文件
root 用戶相當於執行了 vim /root/.bashrc
普通用戶則是 vim /home/allen(普通用戶名)/.bashrc
root用戶要在/root/.bashrc中進行配置
普通用戶要在/home/allen(用戶名)/.bashrc 下進行安裝
在配置文件中添加配置內容
WORKON_HOME=~/Envs # 設置virtualenv的統一管理目錄, 創建的虛擬環境文件都會放在這裡
VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 添加virtualenvwrapper的參數,生成乾凈隔絕的環境
VIRTUALENVWRAPPER_PYTHON=/opt/python3/bin/python3 # 指定python解釋器的本體(註意此路徑隨不同的linux環境改變而改變)
解釋器一定要進行配置, 否則會報錯, 要指定pip對應的python解釋器, 可以通過 pip -V 進行查看 pip對應的python解釋器版本
source /opt/python34/bin/virtualenvwrapper.sh # 執行virtualenvwrapper安裝腳本
無法確定virtualenvwrapper.sh路徑時可以通過find 進行查找, 查找範圍基本可以確定到 /home/(用戶名)/ 和 /usr/
find /usr/ -name "virtualenvwrapper.sh" -type ffind /home/ -name "virtualenvwrapper.sh" -type f
使用普通用戶安裝的一般都會在/home目錄下, root用戶安裝的會在/usr目錄下添加配置信息後重新載入配置文件 source ~/.bashrc
- 使用sudo pip list 和 pip list 查看後發現都安裝了virtualenv 和 virtualenvwrapper ,切換root 用戶輸入find / -name "virtualenvwrapper.sh" 命令進行查找 會發現有兩個查找結果.
這是因為在bashrc配置文件中指定的python解釋器與安裝的virtualenvwrapper的解釋器沒有對應上導致的.
解決方法:
重新編輯配置文件內容, 修改配置信息
可以通過一下的方法來查找虛擬環境和python解釋器的對應關係:
首先: 查看pip版本, 獲取到pip對應的預設的版本
pip -V
可以得到到類似下麵的信息 (有一些情況pip會指向python3)
pip 19.2.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
確認pip指定的是python2版本的解釋器, 然後使用which python查看python的解釋器路徑
然後在配置中配置python解釋器和對應的virtualenvwrapper.sh
與情況一相同, 要修改自己使用的用戶對應的配置文件.
- 不過當root 和 普通用戶都安裝虛擬環境併進行配置之後,在切換用戶時可能會出現如下報錯:
雖然看起來是又搞砸了, 但是這個問題並不影響使用創建虛擬環境的使用, 個人不建議在root 和 普通用戶下都安裝虛擬環境.
有強迫症的同學可以自己去研究一下.
二. 存在多個python版本是, 使用虛擬環境指定版本時出錯
不同項目中可能會使用到不同的python版本,想要使用虛擬環境指定python版本創建虛擬環境時要註意:
只需要安裝一次虛擬環境, 在創建虛擬環境時通過指定python解釋器的方式來創建不同python版本的虛擬環境.
解決方案和問題一種的基本類似, 最主要的問題還是要讓配置信息中的虛擬環境和python解釋器相對應,
建議安裝其他的python版本時使用編譯安裝, 然後在/usr/bin下創建軟連接, 連接中標明安裝的版本號.
目前已知使用virtualenvwrapper過程中可能出現的錯誤:
1.zlib錯誤
觸發錯誤的背景:
使用pip3安裝virtualenv 和 virtualenvwrapper , 在指定自己安裝的python2.7.16為python解釋器時報錯,無法引入zlib模塊.
ImportError: No module named zlib
解決方案:
使用apt安裝pip
sudo apt install python-pip 如果安裝速度太慢可以更換apt官方源為國內源, 如ali源或者清華源.
但要註意要使用官方網站中提供的源,不要隨便使用百度中博客中提供的源,有大概率會和你的系統版本不匹配導致更新源失敗,無法下載軟體
安裝成功之後,再次指定python2為解釋器創建虛擬環境, 就可以成功創建.
2.stevedore模塊錯誤
觸發錯誤的背景:
使用python3作為解釋器創建虛擬環境時,提示缺少stevedore模塊
ModuleNotFoundError: No module named 'stevedore'
解決方案:
使用pip3進行安裝該模塊即可
pip3 install stevedore
如果提示已經安裝stevedore模塊可以嘗試卸載後再進行安裝.
要註意:
如果同時存在pip 和 pip3 要留意,不要卸載錯了
成功安裝stevedore模塊之後,就可以創建虛擬環境
歡迎指出文章中的錯誤和不足~~~~~