【问题标题】:Django ModuleNotFoundError: No module named 'settings'Django ModuleNotFoundError:没有名为“设置”的模块
【发布时间】:2017-05-27 23:14:10
【问题描述】:

问题

当我尝试运行“python manage.py runserver”时,我收到了这个错误:

    Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x1068ddc80>
Traceback (most recent call last):
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/site-packages/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run
    autoreload.raise_last_exception()
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/site-packages/django/utils/autoreload.py", line 250, in raise_last_exception
    six.reraise(*_exception)
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/site-packages/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models()
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/site-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/Users/aricliesenfelt/.virtualenvs/django/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/Users/aricliesenfelt/Desktop/scratch/django/django_tutorials/supplyai/ingest/models.py", line 5, in <module>
    import settings.py
ModuleNotFoundError: No module named 'settings'

这是我的 urls.py:

from django.conf.urls import url, include
from django.contrib import admin
from rest_framework.urlpatterns import format_suffix_patterns

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^ingest/', include('ingest.urls'))
]

urlpatterns = format_suffix_patterns(urlpatterns)

这是我的 models.py,我只是想导入我拥有的本地 settings.py 文件。不是主要的 settings.py 文件,而是我为这个应用在本地制作的那个。

from sqlalchemy import create_engine, Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.engine.url import URL

import settings

DeclarativeBase = declarative_base()

def db_connect():
    return create_engine(URL(**settings.DATABASE))

def create_data_table(engine):
    DeclarativeBase.metadata.create_all(engine)

class Data(DeclarativeBase):
    __tablename__ = 'data'

    id = Column(Integer, primary_key=True)
    shipper_name = Column('shipper_name', String)
    seller_location = Column('seller_location', String)
    buyer_location = Column('buyer_location', String)
    product_category = Column('product_category', String)
    order_created_date = Column('order_created_date', String)

    def __init__(self, id, shipper_name, seller_location, buyer_location, product_category, order_created_date):
        self.id = id
        self.shipper_name = shipper_name
        self.seller_location = seller_location
        self.buyer_location = buyer_location
        self.product_category = product_category
        self.order_created_date = order_created_date

当我尝试运行服务器时,它告诉我它无法找到 settings.py,但 settings.py 实际上与 models.py 所在的应用程序相同。不知道为什么会这样。任何帮助将不胜感激。

【问题讨论】:

  • 尝试使用from supplyai.ingest import settings

标签: python django


【解决方案1】:

替换

import settings

from django.conf import settings

【讨论】:

    【解决方案2】:
    """
    Load Settings from django
    """
    def setup_settings():
        import os
        import django
    
        # Connect to the Django Database
        script_path = os.path.dirname(__file__)
        os.environ['DJANGO_SETTINGS_MODULE']='<<YOUR_PROJECT>>.settings'
        django.setup()
    
    def load_settings():
    
        from django.core.exceptions import ImproperlyConfigured
    
        try:
            from django.conf import settings as settings
            settings.BASE_DIR <<<< Try to access one your settings
        except (ImproperlyConfigured, ModuleNotFoundError) as ex:
            print("Settings not loaded yet.. Load it now.")
            setup_settings()
            from django.conf import settings as settings
            settings.BASE_DIR
            print("BASE_DIR (%s) loaded." % settings.BASE_DIR)
        except Exception as ex:
            print("Could not load settings (%s)" % ex)
    
        if not hasattr(settings, 'BASE_DIR'):
            print("Could not find BASE_DIR in settings! ERROR!")
            sys.exit(1)
    
        return settings
    
    

    比在每个文件中你只需调用这两行:

    import load_settings
    settings = load_settings()
    

    【讨论】:

      【解决方案3】:

      您需要使用完整路径导入它。试试

      from ingest import settings
      

      【讨论】:

        猜你喜欢
        • 2021-03-14
        • 2019-03-08
        • 2021-08-06
        • 2019-11-28
        • 2018-11-03
        • 2019-01-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多