SORU
16 Aralık 2009, ÇARŞAMBA


Herkes'göreli ithalat s python açıklayabilir mi?

Beni hayat için python göreli ithalat iş ulaşamıyorum. Çalışmıyor nerede için basit bir örnek oluşturdum:

Dizin yapısı:

/__init__.py
/start.py
/parent.py
/sub/__init__.py
/sub/relative.py

6* *içerir: import sub.relative

/sub/relative.py from .. import parent içerir

Diğer tüm dosyalar boş.

Komut satırında: aşağıdaki yürütürken

$ cd /
$ python start.py

Anlıyorum:

Traceback (most recent call last):
  File "start.py", line 1, in <module>
    import sub.relative
  File "/home/cvondrick/sandbox/sub/relative.py", line 1, in <module>
    from .. import parent
ValueError: Attempted relative import beyond toplevel package

Python 2.6 kullanıyorum. Neden bu durumda? Nasıl bu sanal örnek bir iş yapabilirim?

CEVAP
16 Aralık 2009, ÇARŞAMBA


Paketi aldığınız"". sub start.py __init__.py varsa orada bile bir paket değildir.

parent.py üzerinde bir dizinden programı başlatmak için ihtiyacınız olacak:

./start.py

./pkg/__init__.py
./pkg/parent.py
./pkg/sub/__init__.py
./pkg/sub/relative.py

start.py ile:

import pkg.sub.relative

Şimdi paket, üst paket ve göreli ithalat çalışmalıdır.


Eğer mevcut düzeni ile devam etmek istersen sadece import parent kullanabilirsiniz. start.py tercüman başlatmak için kullandığı için start.py bulunduğu dizini python yolunuzda. parent.py orada ayrı bir modül olarak yaşıyor.

Ayrıca eğer bir komut dosyası içine bir şey dizin ağacında daha fazla alma sakın eğer doğru değilse güvenli bir şekilde üst düzey __init__.py, silebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MatheusDosGames

    MatheusDosGa

    28 Aralık 2011
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008
  • Top Gear

    Top Gear

    27 Mart 2006