繁体   English   中英

如何在python2中执行显式相对导入?

[英]how to perform explicit relative import in python2?

我的队友在代码库中添加了明确的相对导入。

from .modulename import classname

现在,如果我尝试运行该文件,我会得到“尝试在非包中导入相对导入”错误?

我试图在Python2中运行它,他进行了这个更改,使这个文件与Python3兼容。 目前,我必须在Python2中运行此文件

我尝试运行的文件和它尝试导入的文件位于同一目录中,该目录是我尝试启动此文件的目录。

显式相对导入在Python 2和Python 3中的工作方式完全相同。问题是你们中的一个人错误地运行了代码 - 可能是你们,尽管这里没有足够的信息可以确定。

如果这个文件应该是一个包的一部分,那么你就错了。 应该直接通过文件名运行它,并且在运行它时不应该在包目录中。 实际上,您很可能根本不应该运行它,只从其他文件导入它。 如果你想要运行它,那么命令就是python -m packagename.modulename来自顶层包可导入的地方 - 如果没有安装包,可能是包含包目录的目录。

如果此文件不应该是程序包的一部分,那么您的队友运行错误。 显式相对导入应转换为绝对导入,您应该添加

from __future__ import absolute_import

到文件的顶部,以确保您不会得到任何意外的隐式相对导入。 在这种情况下,您的合作伙伴将需要停止运行该文件,但他们一直在运行它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM