我有一個項目中,目錄結構如下:有人可以解釋這個奇怪的Python/Django導入行爲嗎?
mywebsite/
manage.py
__init__.py
myapp/
models/
__init__.py
base.py
的myapp /模型/ base.py包含:
class X(object):
pass
的myapp /模型/ __ init__.py包含:
from base import X
現在,如果我做manage.py shell我可以有以下會話:
> import mywebsite.myapp.models
> import myapp.models
> mywebsite.myapp.models.X == myapp.models.X
False
但是,如果我改變的myapp /模型/ __ init__.py是:
from myapp.models.base import X
然後我得到真正的預期。
我想我缺少一些關於導入如何工作或Django在使用manage.py shell時如何更改路徑的信息。
任何人都可以解釋這一點嗎?
Daniel Roseman - 你說這與Django無關。但是,如果我啓動一個普通的python會話(同時CDed入mywebsite)並導入mywebsite,那麼我會得到一個預期的導入錯誤。我懷疑Django正在做一些我不明白的路徑,當我使用manage.py shell – ColinHowe