SORU
3 Aralık 2010, Cuma


göreli ithalat için python ambalaj

Öncelikle off: üzgünüm, göreli ithalat hakkında soru bir sürü var biliyorum, ama ben sadece bir çözüm bulamadı. Mümkünse aşağıdaki dizin düzeni kullanmak istiyorum:

myClass/
    __init__.py
    test/
        demo.py
        benchmark.py
        specs.py
    src/
        __init__.py
        myClass.py

Şimdi benim sorular şunlardır:

  • Nasıl paket içinde test dosyaları düzgün myClass.py ithalat mı?

  • Nasıl dışarıdan paket, libs submodule olarak sınıfım/al sınıfım varsayarak almak istiyorsunuz veya/sınıfım vardır?

Şimdiye kadar bunun için zarif bir çözüm bulamadım. Guido's Decision anladığım kadarıyla from ..src import myClass yapmak mümkün olmalı, ama bu bir hata

ValueError: Attempted relative import in non-package

Paket olarak sınıfım tedavi yok gibi görünüyor. Reading the docs:

__İnit__.py Python dosyalarını içeren paket dizinleri tedavi yapmak için gerekli olan;

Kullanmalıyım paket betikleri yerini belirten bir şey kaçırıyorum gibi görünüyor .pth ?

CEVAP
4 Aralık 2010, CUMARTESİ


ValueError: Attempted relative import in non-package

Paketi değil modülünün göreli ithalat kullanmaya anlamına gelir. from ... import Bu deyimi olan dosyayı ve almaya çalıştığınız hangi dosya ile sorun.

Eğer testleri göreli ithalat yapıyorsanız, örneğin, test paketinin bir parçası olmak için dikkatli olmak gerekir. Bu anlamına gelir

  1. __init__.py/ test ekleme
  2. Dışarıdan bir script çalışan, nosetests gibi

Eğer python myClass/test/demo.py gibi bir şey çalıştırırsanız ithalat göreli olarak paket demo modülü çalıştırdığınız beri çok çalışmaz. Göreli ithalat onları kullanan modül göreli ithalat ile paket modül from myClass.test.demo import blabla veya kendisi ithal ediliyor gerektirir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • jat4011

    jat4011

    16 EKİM 2010
  • Julian Smith

    Julian Smith

    31 EKİM 2006