【问题标题】:Relative and Absolute Path in Python DjangoPython Django 中的相对和绝对路径
【发布时间】:2020-08-05 04:55:10
【问题描述】:

我已成功地将我的设置文件分离到开发和生产设置。

在尝试从 base 导入时(两者共有),我总是遇到路径错误。

当我尝试在 prod.py 文件中执行此操作时

from src.psm_website.settings.base import *

并尝试使用 IDE 进行编译,它运行良好(我使用 print 语句从基础文件中的变量打印)

但是当我尝试部署到 Heroku 时,我得到了错误

from src.psm_website.settings.base import *
remote:        ModuleNotFoundError: No module named 'src'
remote:

然后当我把import语句改成这个

from .base import *

尝试在 heroku 中部署时出现此错误

raise KeyError(key) from None
remote:        KeyError: 'SECRET_KEY'

秘钥是base文件中的一个变量,意思是base没有被导入

当我尝试从 IDE 运行时出现此错误。

from .base import *
ImportError: attempted relative import with no known parent package

我在所有父目录中都有 init.py,根据我阅读的内容制作它们。

我该如何解决这个问题

Python 版本:3.7.7

【问题讨论】:

    标签: django python-3.x path


    【解决方案1】:

    希望“src”是一个python包,只有你的应用程序和你的项目目录(在你的例子中是“psm_website”)应该是,所以首先删除任何@987654322 @ 来自“src”目录(和任何父目录)的文件。 Python 将在它的sys.path 中列出的目录(不是“包” - 只是包含包的目录)中查找包/模块,默认情况下应该已经从您当前的工作目录开始。

    然后你只需通过它的 python 限定名来引用包或模块,在你的例子中是from psm_website.settings.base import *。请注意,您必须正确设置 DJANGO_SETTINGS_MODULE envvar 以指向适当的设置文件,即 DJANGO_SETTINGS_MODULE=psm_website.settings.prod 等。

    注意:如果您有 any python 导入或使用以“src”开头的 python 合格路径进行设置,请务必修复它,否则您几乎可以保证得到double import 问题(一直在这里,做到了……)。

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 2014-02-06
      • 2013-07-14
      • 2010-12-17
      • 1970-01-01
      • 2012-10-16
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多