【问题标题】:Can't import top level packages in django project无法在 django 项目中导入顶级包
【发布时间】:2020-02-28 22:25:11
【问题描述】:

我正在开发一个 django 项目,该项目需要我从另一个包中导入代码。例如,在我的“家庭”应用程序中,我是从“用户”应用程序导入的。在 home 应用程序的 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) 运行 from project.users import services,我得到了同样的导入错误。

【问题讨论】:

  • 您是否尝试删除 project 和只是 from users import services
  • @BearBrown 所以我从所有导入中删除了“项目”的每个实例,它工作了,但是(你是救生员)。但是,我的 IDE(pycharm)显示红色下划线(未解决的参考)。你有没有机会知道解决方案?
  • 可能对你有帮助,我用 sublime 和 vim 对不起stackoverflow.com/questions/38342618/…
  • @BearBrown 是的,很好,我明白了。只需要重新配置我的来源。你是神,谢谢!!!

标签: python django python-3.x importerror


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    settings.py 文件需要在一个模块中,并且是您当前 PYTHONPATH 和 env 的一部分。变量 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
    

    【讨论】:

    • 我已经设置了设置模块和我的 python 路径设置,但是没有运气:(
    • 是的,venv 肯定被激活了
    • 很高兴你解决了它。对于那些在这里遇到同样问题的人,请参阅问题中的 cmets。
    猜你喜欢
    • 2022-11-27
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2016-11-29
    • 2018-01-27
    • 1970-01-01
    相关资源
    最近更新 更多