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

  • Creavite

    Creavite

    8 Mart 2009
  • Joanna Okrajni

    Joanna Okraj

    4 EYLÜL 2010
  • SellerDp

    SellerDp

    27 EKİM 2009