PYTHONPATH ortam değişkeni


19

Bu benim var ~/.profile:

export PYTHONPATH=/home/dev/python-files

In python-filesdizin Ben git-göbek (şişe, curveship ve py-vgdl) klonlanmış birkaç proje var.

Bu projelerdeki örneklerden herhangi birini başlatmaya çalıştığımda, aşağıdakine benzer hatalar alıyorum:

$ python ~/python-files/py-vgdl/examples/gridphysics/frogs.py 
Traceback (most recent call last):
    File "/home/dev/python-files/py-vgdl/examples/gridphysics/frogs.py", line 67, in <module>
        from vgdl.core import VGDLParser
ImportError: No module named vgdl.core

Bana öyle geliyor ki, bu PYTHONPATHçevresel değişkeni ayarladığım için bu hatayı almamalıyım ?

Python etkileşimli yorumlayıcıyı çalıştırma:

>>> import os
>>> os.environ["PYTHONPATH"]
'/home/dev/python-files'

Yanıtlar:


35

Tamamen üzerine yazmak yerine PYTHONPATH'a eklemeyi deneyin.

export PYTHONPATH=$PYTHONPATH:/home/dev/python-files

Referanslar:

PYTHONPATH hakkındaki Python belgelerine göre

Modül dosyaları için varsayılan arama yolunu artırın. [...]

Varsayılan arama yolu kuruluma bağlıdır, ancak genellikle ile başlar prefix/lib/pythonversion(yukarıya bakın PYTHONHOME). Her zaman eklenir PYTHONPATH.

başka bir deyişle bazı değerler vardır PYTHONPATHve varsayılan arama yolu da yalnızca eklenir.

Ayrıca, bu blog gönderisi ( Archive.org bağlantısı ), neden eklemeniz gerektiğini PYTHONPATHve üzerine yazmamanızı da açık bir şekilde açıklamaktadır . - Özel durumlar ve arama yolunu incelemek bölümüne ilerleyerek bunu net bir şekilde açıklar (maalesef o bağlantıya ilişkin göreceli URL yok, böylece kaydırmanız gerekir). Kullanıcı bir mac'ta örnekler vermesine rağmen, herhangi bir platformla çok ilgili


1
@Garrett Teşekkürler :) Archive.org bağlantısı ile güncellendi.
Nitin Venkatesh

Arşiv / stereoplex bağlantısı için +1. Resmi Python belgelerinin ön sayfasında olması gereken birçok soruyu cevaplıyor!
Malik

5

Ayrıca şunları da yapabilirsiniz:

export PYTHONPATH=$(pwd) **or** export PYTHONPATH=${PWD}

pwd şimdiki çalışma dizinidir.


Dikkat, bu işlem sırasında PYTHONPATH üzerine yazacaktır! PYTHONPATH export PYTHONPATH=$PYTHONPATH:$(pwd)
cihazınıza

4

PYTHONPATHPython paketlerinizin ve modüllerinizin nerede olduklarını göstermeli, kasalarınızın nerede olduğunu göstermemelidir. Başka bir deyişle, bir dosya ls "$PYTHONPATH"yaparsanız, *.pydosyaları ( Python modülleri ) ve __init__.pydosya içeren dizinleri ( Python paketleri ) görmelisiniz .

Eğer mümkün olmasını istediğiniz Yani eğer, import vgdl, senin PYTHONPATHgibi görünmelidir:

PYTHONPATH=/home/dev/python-files/py-vgdl

çünkü vgdl paket içeride py-vgdldeğil içeride python-files.

Diğer yolları da eklemek için :bunları ayırmak için kullanabilirsiniz :

PYTHONPATH="/home/dev/python-files/py-vgdl:/home/dev/python-files/something:$PYTHONPATH"

Bu gerçekten işe yarayacaktır, ancak bu gibi durumlarda PYTHONPATHkullanım çok karmaşık olabilir. Benim önerdiğim, virtualenvsizinki gibi durumları basitleştirmek amacıyla yapılan kullanımıdır. Yapmanız gereken temel olarak:

  1. Bir ortam oluşturun: virtualenv env
  2. 'Etkinleştir': source env/bin/activate
  3. Paketlerinizi kurun: Bu, paketlerinizin kullanımı pipveya setup.pykomut dosyası kullanılarak yapılabilir .
  4. Zevk almak.

Çok fazla bilgi vermiyorum çünkü virtualenv iyi belgelenmiştir ve bir konuda yardıma ihtiyacınız olursa yeni bir soru açmanız daha iyi olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.