2012-08-10 43 views
1

我發現我的pythonpath環境變量被忽略。我在Ubuntu上使用python 2.6。我在我的.bashrc如下:Pythonpath仍然被忽略,無法在本地安裝pip

export PTYHONPATH=/my/home/mylibs/lib/python2.6/site-packages/:$PYTHONPATH

然後我安裝使用的numpy一個新版本:

python setup.py install --prefix=/my/home/mylibs/

,它被正確安裝在本地。但是,當我嘗試安裝依賴新版numpy的其他程序包(也使用setup.py)時,它們找不到它,因爲默認情況下,加載的numpy是/usr/llib中的那個,而不是我的PYTHONPATH中指定的那個。我的PYTHONPATH得到正確設置,但系統範圍的目錄仍然覆蓋它。

這怎麼解決?我只想在我做import numpy時訪問我的本地版本numpy。我看到了與Python 2.4相關的其他帖子,但據我所知它永遠不會解決。另外,我想這樣做,而不是現在安裝pip或virtualenv。看起來應該可以使用--prefix--home選項傳遞給setup.py,然後更改PYTHONPATH但這不適用於我...系統寬lib dirs首先被讀取。

編輯:我嘗試按照建議使用pip。我有一個系統安裝舊的pip,不承認--user(版本0.3)。我試圖升級pippip本身,但當然失敗,因爲我不能在本地安裝,所以pip install pip --upgrade --user不是一個選項。我下載了一個新版本的pip,並在本地安裝在我的主目錄中,但是當我在提示符下鍵入pip時,仍舊使用全系統舊版本。我看着pip包,發現runner.py所以我試圖用它來安裝軟件包:

runner.py install --user numpy --upgrade 

這仍然失敗,拒絕權限:

OSError: [Errno 13] Permission denied: '/usr/bin/f2py2.6' 

看起來--user壞了。我也不知道這將如何解決這個事實,即系統寬python使用系統範圍包/usr/lib ...有沒有解決這個問題?似乎現在在Python中安裝本地軟件包幾乎是不可能的。

+0

會發生什麼= 「/路徑/到/一些/其中:$ PYTHONPATH」 蟒蛇-c「進口SYS;打印「\ n」.join(sys.path)'' 您是否首先看到新路徑? – lazy1

+0

使用pip和'--user'選項是解決問題的答案。你爲什麼不想安裝它?另外,您是否在系統範圍的站點包目錄中安裝了numpy? – Keith

+0

爲什麼不使用'sudo apt-get install python-numpy'? – bmu

回答

2

好的,Python將使用它找到的第一個軟件包。在系統之後,PYTHONPATH被附加到sys.path。所以它通常會首先找到系統。但是,「官方」每用戶軟件包目錄似乎在此之前。因此,建立您的個人站點包目錄:

mkdir -p $HOME/.local/lib64/python2.7/site-packages 
mkdir $HOME/bin 

(您可能需要更改「lib64下」到「LIB32」或只是「LIB」)

該目錄將存放在系統中的一個在我的系統上。但是你應該通過打印sys.path來驗證它。

然後安裝你的軟件包到那裏。但是,最新的pip版本中的--user選項應該已經放置在那裏。

作爲列表度假村,您可以操縱sys.path。您可以在系統站點包之前將您的目錄插入sys.path,然後導入numpy。

您從腳本安裝中獲取權限錯誤,試圖將其放入系統位置。您可以通過其他選項將腳本安裝到$ HOME/bin目錄中。

安裝這樣的:當您運行 `PYTHONPATH

pip install --user --install-option="--install-scripts=$HOME/bin" 
+0

我剛用'--user'試過'pip 1.1',它仍然不能在本地安裝東西。如果我這樣做:'pip install --user pandas',它會因OSError失敗:[Errno 13] Permission denied:'/ usr/bin/f2py2.6''。它仍然試圖改變系統範圍的目錄... – user248237dfsf

+0

@ user248237查看更新的答案。讓我知道這是如何工作的。 – Keith

+0

這個目錄並沒有放在第一位......系統路徑是第一個 – user248237dfsf