[英]Django ImportError for models.py
(更多信息更新我的問題。)我的django應用程序在我的開發服務器上正常運行。 我有一個視圖,使用下面的行從數據庫拉出工作正常:
from myapp.models import MyTable
但是,如果我將上面的'from / import'添加到另一個模塊(參見下面的結構,它是名為'problem_module.py'的模塊)我正在編寫我想從sqlite3數據庫中提取的地方,我得到了這個錯誤。
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'myfolder.settings' (Is it on sys.path?): No module named myfolder.settings
當人們收到此錯誤時,我已閱讀並嘗試了各種解決方案,但我遺漏了一些因為我無法解決問題。
我正在使用Django 1.4並按照建議進行布局。
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
myapp/
__init__.py
models.py
admin.py
views.py
indevelopment/
__init__.py
problem_module.py
我仔細查看了django源代碼后仔細查看了發生了什么以及為什么會這樣做。 這是發生了什么。
當你運行: python manage.py runserver
假設您已經更改了這個小文件,或者只是不注意它,因為django 1.4會自動為您配置環境變量。 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
但是,因為os.environ的這個設置位於: if __name__ = "__main__"
表達式下,所以只有在直接調用該文件時才會運行,如下所示: python manage.py runserver
否則,如果您正在運行需要該環境變量的文件 - 比如在Eclipse中測試模塊 - 那么os.environ需要在另一個地方設置(shell等)。
我得到的所有內容一般都指向了這一點,但我需要上下文。
但是在源代碼上進行一些調整(是的,並不是一個好主意),您也可以在/django/conf/__init__.py
中手動對其進行硬編碼。
具體來看它發生的位置,下面的更改有效:
# in module: /django/conf/__init__.py
class LazySettings(LazyObject):
def _setup(self):
try:
# Comment out the call to os.environ and hardcode in your app settings
# settings_module = os.environ[ENVIRONMENT_VARIABLE]
# WARNING: bad practice to do this. ;.
settings_module = "myapp.settings"
你有沒有改變/設置DJANGO_SETTINGS_MODULE
?
嘗試export DJANGO_SETTINGS_MODULE=mysite.settings
並啟動您的開發服務器。
修改你的manage.py:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
PyCharm有時會覆蓋DJANGO_SETTINGS_MODULE以清空字符串。 嘗試調試您的manage.py,看看在setdefault()
調用后它是否真的發生了變化。 如果它不是更改pycharm設置或使用os.environ['DJANGO....']='my_settings'
..或黑客文件在.idea/
。 .idea/workspaed.xml
包含
env name="DJANGO_SETTINGS_MODULE" value=""在這種情況下
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.