2011-08-18 32 views
6

Tôi tạo ra ứng dụng Django của riêng tôi với cấu trúc thư mụcDjango ImportError

/appname 
    __init__.py 
    models.py 
    /submodule1 
     __init__.py 
     a.py 

Bên a.py Tôi đã sau nhập khẩu

from ..models import Something 

này hoạt động ổn nếu tôi có /appname bên trong thư mục /djangoproject của tôi, nhưng khi tôi cài đặt ứng dụng vào các gói trang web của Python (thông qua số setup.py mà tôi đã tạo), tất cả các ngắt địa ngục đều bị mất và a.py không còn có thể nhập Something, với e sau rror:

ImportError: cannot import name Something 

Đây là setup.py:

from distutils.core import setup 

setup(name='appname', 
     version='0.1', 
     packages=['appname', 'appname.contrib'], 
) 

Trả lời

5

Hóa ra đó là lỗi nhập vòng tròn. models.py đã nhập a.pya.py đã nhập models.py.

Breaking vòng tròn này đã giải quyết được vấn đề nhập khẩu, nhưng bây giờ nó là thời gian để tìm ra cách để làm thẩm lười biếng bằng Python :-)

+0

Tôi đã chạy vào chính bản thân mình, tôi chỉ cần đưa câu lệnh nhập vào bên trong hàm yêu cầu 'a.py' nhưng điều đó có vẻ rất khốc liệt. Giải pháp của bạn là gì? – Harry

2

Đặt tập tin trống mang tên: __init__.py bên trong/submodule1 nên Python có thể phân tích nó như module. Nó sẽ giúp. Tương tự trong/appname - cũng phải có __init__.py tệp

+0

Có, tôi đã '__init py' __. Trong cả hai '/ submodule1' và'/'nhưng nó vẫn cho tôi' ImportError'. –

Các vấn đề liên quan