我一直在我的~/.local/
目錄中保存我所有的python2.7安裝,這種方式我不需要每次我想要做pip install
。我的$PYTHONPATH
上也有$HOME/.local/lib/python2.7/site-packages
。這已經運行好幾年了,但現在我發現自己需要更頻繁地運行python3
程序。經過大量的研究好像virtualenv
是應對python
2和3在同一系統中最值得推薦的方式。但我遇到了麻煩。我可以旋轉了一個python3
虛擬環境,但是當我嘗試使用pip
安裝新庫,我的老全局路徑(即~/.local/
)仍然由pip
搜查,這是有道理的。然而,這是即使如此,如果我從我的$PATH
刪除我~/.local/bin/
目錄和取消我的$PYTHONPATH
。 這裏是我採取的步驟:首先 激活virtualenv
前檢查預賽。 (我是在Ubuntu 16.04的BTW)
[email protected]:~$ echo $PATH
/usr/local/cuda-8.0/bin:/home/maddoxw/.node_modules_global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/maddoxw/bin:/home/maddoxw/scripts
[email protected]:~$ echo $PYTHONPATH
[email protected]:~$ python --version
Python 2.7.12
[email protected]:~$ python3 --version
Python 3.5.2
[email protected]:~$ which pip
因爲我從我的路徑中刪除我的~/.local/bin
目錄,那麼我可以肯定pip
不會被發現。另外,$PYTHONPATH
仍然是空的。現在我創建我的virtualenv
:
[email protected]:~$ mkdir test && cd test/
mkdir: created directory 'test'
[email protected]:~/test$ python3 -m venv .env
[email protected]:~/test$ source .env/bin/activate
(.env) [email protected]:~/test$ echo $PATH
/home/maddoxw/test/.env/bin:/usr/local/cuda-8.0/bin:/home/maddoxw/.node_modules_global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/maddoxw/bin:/home/maddoxw/scripts
(.env) [email protected]:~/test$ echo $PYTHONPATH
(.env) [email protected]:~/test$ which python
/home/maddoxw/test/.env/bin/python
(.env) [email protected]:~/test$ python --version
Python 3.5.2
(.env) [email protected]:~/test$ which pip
/home/maddoxw/test/.env/bin/pip
好。我~/.local/
仍然不在我$PATH
,$PYTHONPATH
仍然是空的,python
指向正確的路徑和版本,pip
指向正確的位置。現在讓我們試試pip install
一個新鮮的lib。
(.env) [email protected]:~/test$ pip install Cython
Requirement already satisfied: Cython in /home/maddoxw/.local/lib/python2.7/site-packages
爲什麼pip
還在尋找在非$PATH
路徑?
我不知道爲什麼它這樣做,但如果一切都失敗了,你可以用' /斌/ PIP安裝cython'直接運行所需的PIP – orangeInk