ImportError:导入 dj_database_url ImportError:没有名为“dj_database_url”的模块

Posted

技术标签:

【中文标题】ImportError:导入 dj_database_url ImportError:没有名为“dj_database_url”的模块【英文标题】:ImportError : import dj_database_url ImportError: No module named 'dj_database_url' 【发布时间】:2018-02-08 09:50:29 【问题描述】:

我正在尝试使用 Django + Heroku + 所有必要的依赖项来创建我的应用程序。

按照以下步骤操作后:

migrating an existing django project

但是,当我运行 python3 manage.py runserver 时,我不断收到此错误:

导入 dj_database_url ImportError: 没有名为“dj_database_url”的模块

我已尝试使用 these instructions 和 this 修复它

这是我的代码:

我导入了 dj-database-url

import dj_database_url

db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

我添加了以下静态资产必需品

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

这在我的 requirements.txt 文件中

dj-database-url==0.4.2

gunicorn==19.7.1

白噪声==3.3.0

我仍然收到ImportError。我该如何解决?

【问题讨论】:

这个错误是在本地服务器上还是在 Heroku 上? @SachinKukreja 我不确定。错误路径是这样的:/Users/iivri.andre/virtualenvironment/new_app/Tut/Tut/settings.py, line 14, 我认为是本地的 pip freeze 的输出包含dj-database-url?在虚拟环境中安装它?重启gunicorn?尝试使用 django 开发服务器? @SachinKukreja 在我执行了这些步骤之后:migrate existing django project 我跑了python3 manage.py runserver 所以我不确定我对gunicorn做了什么 不要忘记在推送之前提交更改,否则您将不断收到相同的错误 【参考方案1】:

您是否使用类似的东西安装了库

pip install -r requirements.txt

pip install dj-database-url==0.4.2

.env/bin/pip install dj-database-url==0.4.2

?

【讨论】:

我使用来自migrating an existing django project的pip install dj-database-url【参考方案2】:

数据库 url 用于将您的数据库与 Heroku 挂钩/连接。试试这个方法。

if 'DATABASE_URL' in os.environ:
    DATABASES = 
        'default': dj_database_url.parse(os.environ.get('DATABASE_URL'))
    
else:
    print("Postgres URL not found, using sqlite instead")
    DATABASES = 
        'default': 
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        
    

另外,请检查您是否在 Heroku 设置中将 DATABASE_URL 添加到 config vars 中。此外,还要检查您是否在config vars 中添加了您的SECRET_KEY,以及您是否正确配置了您的ALLOWED_HOSTS`` as they have to be states like this in yoursettings.py```:

SECRET_KEY = os.environ.get("SECRET_KEY")

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['<your-app-name>.herokuapp.com', '127.0.0.1']

你的requirement.txt 必须是这样的:


dj-database-url==0.5.0
Django==1.11.24
django-forms-bootstrap==3.1.0
gunicorn==20.0.4
Pillow==7.0.0
psycopg2-binary==2.8.4
pytz==2019.3
whitenoise==5.0.1

【讨论】:

【参考方案3】:

这对我有用

from django.conf.urls import url
from django.urls import reverse_lazy
from django.contrib.auth.views import PasswordResetView, PasswordResetDoneView, PasswordResetConfirmView, PasswordResetCompleteView

urlpatterns = [
    url(
        'accounts/password_reset/',
        PasswordResetView.as_view(),
        name='password_reset'
    ),
    url(
        'accounts/password_reset_done/',
        PasswordResetDoneView.as_view(),
        name='password_reset_done'
    ),
    url(
        'accounts/password_reset_confirm/',
        PasswordResetConfirmView.as_view(),
        name='password_reset_confirm'
    ),
    url(
        'accounts/password_reset_complete/',
        PasswordResetCompleteView.as_view(),
        name='password_reset_complete'
    ),
]

【讨论】:

以上是关于ImportError:导入 dj_database_url ImportError:没有名为“dj_database_url”的模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:无法导入名称发现

ImportError:无法导入名称“AFAVSignature”

ImportError:无法导入名称 VarianceThreshold

Django 'ImportError: 无法导入名称 url'

ImportError:无法导入名称“WebClient”

ImportError:无法导入名称'password_reset'