无法在 Django 项目中导入顶级包

Can't import top level packages in django project

我正在开发一个 Django 项目,该项目需要我从另一个包导入代码。例如,在我的 "home" 应用程序中,我从 "users" 应用程序导入。在家庭应用程序的 index.py 视图中,我使用的是 from project.users import services。 运行 这来自 python shell 工作正常,但是,如果我尝试 运行 python3 manage.py runserver,我得到错误 ModuleNotFoundError: No module named 'project.users'。我尝试将我的项目目录及其父级添加到我的 sys.path,但是,没有任何变化。我也尝试使用不同的机器和 venv 但没有成功。我该如何解决这个问题?

编辑:我还尝试了来自 django shell (python3 manage.py shell) 的 运行ning from project.users import services,我得到了相同的导入错误。

每个 django 项目都带有一个 settings.py 文件,django 将拒绝 运行 或加载模型,直到加载该 settings.py 文件。

settings.py 文件需要在模块中,并且是当前 PYTHONPATH 和环境的一部分。变量 DJANGO_SETTINGS_MODULE 应该设置为它。

例如:

# assuming your file is under /myproject/mywebsite/settings.py
export PYTHONPATH=/myproject/
export DJANGO_SETTINGS_MODULE=mywebsite.settings

编辑:

如果你在 virtualenv 中,你需要激活它才能 运行 ./manage.py 'command'

source path/to/your/virtualenv/bin/activate

我通过将导入从 from project.users import services 更改为 from users.import services 来解决问题。

此外,要修复 pycharm 中的红色下划线,只需将您的项目根目录(在我的示例中为 "project" 文件夹)标记为源代码根目录(右键单击 > 将目录标记为.. > 源代码根目录).

(@BearBrown 的回答,归功于他)