2017-08-11 72 views
0

我一直在我的~/.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路徑?

+0

我不知道爲什麼它這樣做,但如果一切都失敗了,你可以用' /斌/ PIP安裝cython'直接運行所需的PIP – orangeInk

回答

0

首先,安裝pip3與python3一起使用。你可以用下面的命令來安裝它,然後用PIP3安裝軟件包。

sudo易於得到安裝python3-PIP

0

[解決]

當我開始建立我python2.7環境遙想當年,我爲自己創造了一個方便的小功能來包裹pip,使我就不必鍵入出--user每次我想pip install

pip() { 
    if [ "$1" = "install" -o "$1" = "bundle" ]; then 
    cmd="$1" 
    shift 
    $HOME/.local/bin/pip $cmd --user [email protected] 
    else 
    $HOME/.local/bin/pip [email protected] 
    fi 
} 

時間我在0123把這個功能 在我的〜/ .bashrc我增加了行,

[ -f ~/.bash.d/bash_functions ] && source ~/.bash.d/bash_functions 

所以,雖然我在我的道路刪除$HOME/.local/。每次我啓動一個新終端時,這個包裝函數仍然被調用。天氣與否我是或不是在一個virtualenv是無關緊要的。

解決方案?

註釋掉(或完全刪除)函數包裝器修復它。

相關問題