2016-04-11 21 views
0

Modülleri aldığımda, bu iç içe geçmiş senaryo düzgün çalışır. Ama paketleri almaya çalıştığımda tutarsız sonuç aldım. Benim geçerli klasörünpython: 'iç içe' modülleri olan içe aktarılan paketler

içeriği: Bu script

mypackages <directory> 
    __init__.py 
    one.py 
    two.py 
    three.py 

: Burada çok basit bir dava

__init__.py : 
import one 

one.py : 
import two 

two.py : 
import three 

ben erişebilir olması gerektiğini bekliyorum iki ve üç bu şekilde:

import mypackages 
mypackages.one.two 
mypackages.one.two.three 

veya diğer kelime mantıksal seviye böyle olmalıdr:

>>> import mypackages 
>>> print dir(mypackages) 
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 
'__path__', 'one', 'three', 'two'] 

Bu anlaşma: i ne zaman ithalat mypackages Ama ben var aynı seviyede maruz tüm modüller

one 
    two 
    three 

Sadece one modülünü göster, değil mi? bunların aynı seviyede oldukları anlamına gelir tüm one , two ve three (i mypackages.two ve mypackages.three doğrudan kullanabilirsiniz) gösterir neden karıştı.

Herhangi bir açıklaması var mı?

cevap

0

this ürününü okumanız gerekir.

Dosyaları aynı seviyeye getirdiğinizde, bunları aynı paket seviyesine getirin.

import mypackage.one 
import mypackage.one.two 
import mypackage.one.two.three 
: Birlikte paketi erişebilir, ardından

mypackage 
├── __init__.py 
├── one.py # contains "import two" 
└── two 
    ├── __init__.py 
    ├── three 
    │   ├── __init__.py 
    │   └── three.py 
    └── two.py # contains "import three" 

Ve: sizin durumda, bu mimariyi almak gerekir

İlgili konular