2012-06-08 13 views
7

Yerleşik olmayan bir modül içe aktarıldığında, yorumlayıcı sys.path tarafından verilen konumlarda arama yapar. sys.path Bu yerlere (http://docs.python.org/library/sys.html#sys.path) olarak başlatılmış olan:Python modülü arama yolu Mac OS X'te nasıl belirlenir?

  1. giriş komut (veya dizinin)
  2. PYTHONPATH içeren dizin
  3. kuruluma bağlı

ilk iki iken kaynaklar düz ileri, üçüncü kişinin nasıl çalıştığını ve etkilemek için hangi olasılıkların olduğunu açıklayabilir mi? Ben genel bir solüsyon ilgi olacağını rağmen

, benim belirli sorunlar şunlardır:

  • Ben Enthought distribution 7.2 32-bit yüklü ve sonra Scipy-Superpack var. Şimdi, python'un, süper paketin yükleneceği site paketleri yerine, /Library/Python/2.7/ numaralı telefondan numpy ithal etmeye çalıştığı görülüyor. py2app-A ile oluşturulan 1uygulama, python start_app.py ile uygulama başlatırken olduğu gibi aynı sys.path sahip değil.

cevap

2

Üçüncü kaynağın temeli, platforma bağlı olarak derleme zamanında (veya zamanı daha kesin bir şekilde yapılandırarak) ayarlanır. Daha sonra genişletilir ve .pth dosyaları, vb. Aracılığıyla çalışma zamanında eklenir (Python yürütülebilir dosyayı üçüncü kaynağı etkileyecek şekilde derlendiğinde yapabileceğiniz bir şeydir).

Python belgelerin Bu sayfa İstediğin neden emin değilim tüm .pth dosyaları nasıl çalıştığı hakkında bilgi ve birikimi zaman ayarlarından nasıl inşa edildiğini sys.path da daha fazla bilgi vb http://docs.python.org/library/site.html

sahiptir Özellikle bu sys.path'u etkileyebileceğiniz üçüncü kaynağı etkilemek için. Her neyse, (Python derlemeye ve kaynak kodu yama olmadan) sys.path etkilemenin üç yolu vardır: PYTHONPATH ortam değişkeni Via

  1. .
  2. .pth dosyalarını oluşturarak ve Python'un paketleri taradığı yerlerde bırakarak. (. Ayrıntılar için daha erken bağlantıya bakın)
  3. Programlı, sys aktarmayı ve ardından ekleyerek veya prepending tarafından istediğini yapmak yardımcı olacaktır bu üç yoldan biriyle Umarım

import sys 
sys.path.insert(0, '/this/path/will/be/considered/first') 

sys.path için.

+0

Bu cevap için teşekkürler! Üçüncü kaynak ile ilgilenmemin nedeni, özellikle "PYTHONPATH" içinde olmayan istenmeyen kütüphanelerin olduğu durumlarda, sys.path 'a doğrudan erişimim olmadığı bir hataya neden olur. Sfenks belgelerini oluştururken. – christianbrodbeck

1

Mac OS X 10.7.5 sistemde, Enthought python'un /Library/Python/2.7/ dizininde modülleri aradığı sorunu da vardı. Görünüşe göre, bu /Library/Python/2.7/site-packages içinde bulunan easy-install.pth dosyasının neden oldu. Bu dosyanın uzantısını değiştirdikten sonra Entegre python Enthought modüllerini içe aktardı (/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages).