账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    sentos虚拟环境下 django-admin 创建时 'Could not import settings'
    48
    0

    File "/home/django-file/virtualenv/test/bin/django-admin", line 5, in <module>

    management.execute_from_command_line()

    File "/home/django-file/virtualenv/test/lib/python2.6/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line

    utility.execute()

    File "/home/django-file/virtualenv/test/lib/python2.6/site-packages/django/core/management/__init__.py", line 392, in execute

    self.fetch_command(subcommand).run_from_argv(self.argv)

    File "/home/django-file/virtualenv/test/lib/python2.6/site-packages/django/core/management/__init__.py", line 261, in fetch_command

    commands = get_commands()

    File "/home/django-file/virtualenv/test/lib/python2.6/site-packages/django/core/management/__init__.py", line 107, in get_commands

    apps = settings.INSTALLED_APPS

    File "/home/django-file/virtualenv/test/lib/python2.6/site-packages/django/conf/__init__.py", line 54, in getattr

    self._setup(name)

    File "/home/django-file/virtualenv/test/lib/python2.6/site-packages/django/conf/__init__.py", line 49, in _setup

    self._wrapped = Settings(settings_module)

    File "/home/django-file/virtualenv/test/lib/python2.6/site-packages/django/conf/__init__.py", line 132, in init

    % (self.SETTINGS_MODULE, e)

    ImportError: Could not import settings 'config.django.production' (Is it on sys.path? Is there an import error in the settings file?): No module named config.django.production

    创建软连接后执行出现Could not import settings 'config.django.production'

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 淚已干丶心已碎 普通会员 2楼

      在Sentos虚拟环境中 Django-admin 创建时遇到 "Could not import settings" 错误,这通常发生在以下几种情况下:

      1. Django settings directory does not exist: 在Sentos中,Django-admin创建项目时需要一个名为 settings.py 的文件,这个文件包含了项目的配置信息,包括数据库连接、日志配置、静态文件路径等。如果这个文件不存在或者路径不正确,Django-admin无法找到配置文件,从而引发错误。

      $ sentos create-project --settings settings.py

      这段代码将提示 settings.py 文件的路径,并要求你将此路径添加到项目的 INSTALLED_APPS 或者 DJANGO_APPS 库中。例如,如果你的 settings.py 文件在 /usr/share/sentos/settings.py 中,你需要将此路径添加到 INSTALLED_APPS 或者 DJANGO_APPS 库中:

      INSTALLED_APPS = [ # ... 'settings', ]

      或者:

      DJANGO_APPS = [ # ... 'settings', ]

      1. Settings.py文件中的配置设置未正确导入: 在 settings.py 文件中,你需要确保所有必要的设置项(如数据库连接、日志配置、静态文件路径等)都已经被正确导入。例如,如果你的 settings.py 文件包含以下配置:

      ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'sentos', 'USER': 'postgres', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': 5432, } }

      LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s', }, }, 'filters': [ 'require_debug_false', # ... ], 'loggers': { 'django': { 'level': 'DEBUG', 'handlers': ['console'], }, }, }

      STATICFILES_DIRS = [ # ... 'static', ] ```

      在此例子中,我们使用了 django.db.backends.postgresql_psycopg2 库来连接数据库,使用了 django.contrib logging 库来设置日志配置,使用了 django.views.staticfiles 库来设置静态文件路径。在 settings.py 文件中,这些设置项必须按照以下方式导入:

      INSTALLED_APPS = [ # ... 'django.contrib', 'django.contrib.logging', 'django.contrib.staticfiles', # ... 'settings', ]

      或者:

      INSTALLED_APPS = [ # ... 'django.contrib', 'django.contrib.logging', 'django.contrib.staticfiles', # ... 'settings', # ... 'django.contrib.auth', # ... 'django.contrib.auth.backends.ModelBackend', ]

      1. Settings.py文件中包含了无效的配置项: 在 settings.py 文件中,你可能在设置项的名称、值或语法上出现错误,导致Django无法正确识别该设置项。例如,如果你在 settings.py 文件中设置了以下设置:

      python MIDDLEWARE = [ # ... 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # ... 'django.middleware.csrf.CsrfMiddleware', # ... 'django.contrib.auth.middleware.AuthenticationMiddleware', # ... # ... 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.GermanMiddleware', ]

      在此例子中,django.contrib.sessions.middleware.SessionMiddleware 应该在 MIDDLEWARE 中,而不是 MIDDLEWARE[0] 中。在 settings.py 文件中,你应该修改为:

      MIDDLEWARE = [ # ... 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', # ... 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfMiddleware', # ... 'django.contrib.auth.middleware.AuthenticationMiddleware', # ... 'django.contrib.auth.backends.ModelBackend', ]

      或者:

      MIDDLEWARE = [ # ... 'django.contrib.sessions.middleware.SessionMiddleware', # ... 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfMiddleware', # ... 'django.contrib.auth.middleware.AuthenticationMiddleware', # ... 'django.contrib.auth.backends.ModelBackend', 'django.contrib.messages.middleware.MessageMiddleware', ]

      1. 路径设置不正确: 在 Django-admin 中,你可以通过设置项目的 DJANGO_SETTINGS_MODULE 设置来指定项目的配置文件路径。例如,如果你的项目名为 myapp,你可以设置以下 DJANGO_SETTINGS_MODULE 设置:

      python DJANGO_SETTINGS_MODULE = 'myapp.settings'

      如果 settings.py 文件在 /usr/share/sentos/settings.py 中,你也可以设置以下路径:

      DJANGO_SETTINGS_MODULE = '/usr/share/sentos/myapp/settings.py'

      请确保你正确设置了 DJANGO_SETTINGS_MODULE 设置,并且文件路径与 settings.py 文件路径保持一致。

      1. Django settings.py文件的权限问题: 如果 settings.py 文件的权限设置不正确,Django-admin可能会无法正常运行。在这种情况下,你需要确保 settings.py 文件的权限设置正确,即文件和其子文件的权限为 readwrite 位,而不是 execute 位。例如,如果你的 settings.py 文件权限为 rwxrwxr-x,Django-admin可能无法读取或执行其内容,从而引发 "Could not import settings" 错误。

      sudo chmod +x /usr/share/sentos/myapp/settings.py

      如果 settings.py 文件权限为 rwxrwxr-x,你可以尝试将文件权限设置为 rwxr-xr-x,例如:

      sudo chmod +x /usr/share/sentos/myapp/settings.py sudo chown -R sentos:users /usr/share/sentos/myapp/settings.py

      请确保你正确设置了文件权限,并且文件的所有者和所有者组与 settings.py 文件的权限一致。

      1. os.path.join 函数出错: 在 Django-admin 中,你可以使用 os.path.join 函数来将多个文件或目录连接成一个完整的文件路径。如果 os.path.join 函数在 settings.py 文件中使用了错误的路径,Django-admin可能会抛出 Could not import settings 错误。

      ```python # settings.py import os

      # ... STATIC_ROOT = os.path.join(os.path.dirname(file), 'static') ```

      如果 os.path.join 函数在 settings.py 文件中使用了错误的路径,例如 /usr/share/sentos/myapp/static,Django-admin可能会抛出 Could not import settings 错误。

      在解决这个问题时,你应该检查 settings.py 文件的路径是否正确,以及路径中的路径是否包含文件或目录的完整路径,而不是仅依赖于文件名。例如:

      ```python # settings.py import os

      # ... STATIC_ROOT = os.path.join(os.path.dirname(file), os.path.join(os.path.dirname(file), 'static')) ```

      这将确保 os.path.join 函数将 static 目录和其子目录连接成一个完整的文件路径。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部