簡體   English   中英

models.py的Django ImportError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM