2011-10-26 12 views
23

Python'a varolan komut dosyalarını değiştirmeden ek site-packages konumları hakkında bilgi vermenin bir yolu var mı?Site paketleri için ek konumlar kullanmak üzere Python'u yapılandırma

CentOS 5.5 sunucumda, /opt/python2.7.2 numaralı bilgisayara yüklenmiş bir Python 2.7 yüklemesi var ve /opt/python2.7.2/lib/python2.7/site-packages numaralı telefondan site-packages klasörü var.

Bunun nedeni, 5.5 dağıtımıyla birlikte gelen varolan Python 2.4 yüklemesini bozmak istemediğimdir. Bununla birlikte, bir üçüncü taraf Python uygulaması ayrıca site-packages klasörünü /usr/local/lib/python2.7/site-packages'a ekledi ve kendisini bu konuma yükledi.

Bu, yüklemeden önce uygulamanın Makefile numaralı uygulamasında PREFIX'u değiştirmediğim için benim için bir hatamdı, ancak şu anda yapabileceğim fazla bir şey yok.

ben bunu yapabileceğimi biliyorum:

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

Ancak beni her senaryoyu aşağı izleme ve gelecekte güncellemeler olmalıdır ideal değildir yukarıda ekleyerek gerektirecektir.

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

Bu sorunsuz görünen ancak daha iyi bir yolu olup olmadığını merak ediyorum:

Bundan kaçınmak için bu üçüncü parti uygulama konuma /opt/python2.7.2/lib/python2.7/site-packages, sembolik bağ yarattı?

cevap

36

Site-specific configuration hook'u kullanabilirsiniz.

"Bir yol yapılandırma dosyası adını formu name.pth sahiptir ve yukarıda belirtilen dört dizinleri birinde var olan bir dosyasıdır; içeriği ek öğeler (satır başına bir) sys.path ilave edilecektir."

Senin durumunda

, sadece içerecek şekilde dizinin yolunu içeren bir .pth dosyada bırakarak istediğini elde etmek mümkün olmalıdır:

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

Bu işlem bir işlem yapar, ancak kurşunu ısırmaya ve dağıtımı düzeltmeye karar verdim. Ama yine de teşekkürler, gelecek için bilmek yararlıdır. – Kev

+2

Bu, python yolunun * sonuna * giden yolu ekler. Özel site paketlerinizin ilk gelmesini istiyorsanız ne yapmalısınız? Bazı başarı ile bir sitecustomize.py dosyası ile deneylerim, ama sadece python yolunu manipüle etmek yeterli değildir kenar vakaları gibi görünüyor. – wryfi

2

Bir ile piton yürütülebilir yerini alabilir Eklenen yükleme yolunu PYTHONPATH'a ekleyen sarmalayıcı komut dosyası. Ama bu bir klug.

Ancak, eklenti yüklemesini, site paketleri dizinine düzgün şekilde girecek şekilde düzeltmeye çalışacağım.

+0

Shawn'ın cevabı hile yaptı, ancak bu düzeltmeyi düzeltmek de doğru bir şekilde uzun vadede daha iyi. – Kev

İlgili konular