为什么相对导入在Python 3中不起作用?

凯文·约翰逊

我最近从python2.7升级到python3,并认为它可能搞砸了一些配置。现在,当我尝试运行模块时,出现导入错误。假设我有一个这样的目录结构:

/directory
/directory/__init__.py
/directory/run.py
/directory/app/db.py
/directory/app/views.py
/directory/app/__init__.py

具有以下进口...

/directory/run.py says 'import app'
/directory/app/db.py says 'import views'

当我执行run.py时,出现一个错误,提示找不到模块视图。但是,如果我进入/ directory / app并执行db.py,则导入将正确运行。我还发现,如果我将/directory/app/db.py更改为“来自应用程序导入视图”,则在执行run.py时它可以正常工作。但是,这曾经用于所有工作!

似乎import语句没有考虑要在其中执行的文件夹。这似乎想让我将所有导入都基于根文件夹,这似乎是不正确的,需要我花费一些时间来更改所有内容。

关于发生的事情有什么想法吗?这让我发疯。

亚历克斯·盖诺

在Python3中,隐式的相对导入已被删除,所有的导入都必须是绝对的,或使用显式的相对导入。

这不会改变,您需要用from app import views替换它们from . import views

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章