2011-10-26 19 views
23

有沒有辦法來告訴Python約而無需修改現有的腳本附加site-packages位置?配置Python來使用站點包其他位置

在我的CentOS 5.5服務器上,我有一個安裝在/opt/python2.7.2中的Python 2.7安裝,並且/opt/python2.7.2/lib/python2.7/site-packages上有一個site-packages文件夾。

這樣做的原因是,我不想打擾現有的Python 2.4安裝與5.5分配發貨。

但是第三方Python應用程序也是在加入了site-packages文件夾:/usr/local/lib/python2.7/site-packages,並在該位置安裝本身。

這在一定程度上是我的錯,因爲在安裝之前我沒有在應用程序的Makefile中調整PREFIX,但現在我沒有太多可以做的。

我知道我能做到這一點:

import sys; sys.path.insert(0, "/usr/local/lib/python2.7/site-packages") 

但是它會涉及我跟蹤每個腳本,並添加上述這是不理想的應該有在未來的更新。

爲了解決這個問題我創建了/opt/python2.7.2/lib/python2.7/site-packages的符號鏈接,該第三方應用程序的位置:

 
ln -sf /usr/local/lib/python2.7/site-packages/theapp /opt/python2.7.2/lib/python2.7/site-packages/theapp 

這似乎很好地工作,但我不知道是否有更好的方法?

回答

36

可以使用Site-specific configuration hook

「A路徑配置文件是一個文件,其名的形式name.pth並且存在於上面提到的四個目錄中的一個;其內容是附加的項目被添加到sys.path(每行一個)」。

在你的情況,你應該能夠達到你想要的東西在包含目錄的路徑.pth文件簡單地拖放到包括:

[[email protected]]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth 
+0

這是一種享受,但我決定點點滴滴,修復部署。但是,無論如何感謝,有益於瞭解未來。 – Kev

+2

這會將路徑添加到python路徑的* end *。如果你想讓你的自定義網站包最先出現怎麼辦?我一直在嘗試一個sitecustomize.py文件,但是似乎有一些邊緣情況,只是簡單地操縱python路徑是不夠的。 – wryfi

2

你可以用替代蟒蛇可執行包裝腳本將追加的安裝路徑追加到PYTHONPATH中。但這是一個混亂。

但我會嘗試修復該加載項的安裝,使其正常進入站點包目錄。

+0

肖恩的回答有訣竅,但你說得對,因爲從長遠來看,安裝確實更好。 – Kev

相關問題