2016-05-12 13 views
11

Bunun bir çok kez sorulmuş olduğunu biliyorum, ancak bir şekilde bu hatanın üstesinden gelemiyorum. İşte benim dizinin YapısalValueError: Test dışı paketlerde göreli içe aktarma denemeleri için değil test paketi için

project/ 
    pkg/ 
    __init__.py 
    subpackage1/ 
     script1.py 
     __init__.py 
    subpackage2/ 
     script2.py 
     __init__.py 

script2.py sahiptir:

class myclass: 
    def myfunction: 

script1.py Ben de

from ..subpackage2 import myclass 

çalıştı

from ..subpackage2 import script2 

vardır Ve bu bana verir : ValueError: Göreli olarak göreli paket dışı ürünlerde içe aktarma

Herhangi bir yardım gerçekten takdir edilecektir.

+0

Muhtemel yinelenen [Python'da göreceli ithalat nasıl yapılır?] (Http://stackoverflow.com/questions/72852/how-to-do-relative-imports-in-python) – ganchito55

cevap

16

Bu cevap neler açıklıyor: Muhtemelen subpackage1/dizini içinden script1.py çalıştırıyorsanız https://stackoverflow.com/a/73149/769971

. İçe aktarımınızı from subpackage2 import script2 olarak değiştirin, pkg/dizine yedekleyin ve ardından python -m subpackage1.script1'u çalıştırın.

+1

bu benim için çalışır. Ben hatam python -m subpackage1.script1' yerine python./Subpackage1/script1.py' ile python betiğini çalıştırmaya çalıştığımı düşünüyorum, bu tamamen yanlış! –

İlgili konular