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

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • HowtoDrawAndPaint

    HowtoDrawAnd

    24 EKİM 2010
  • MW Technology

    MW Technolog

    28 EKİM 2009