我仍然习惯于构造python项目和相关导入,我认为我大部分都理解相对导入,直到我在Py3上测试时遇到问题。从相邻模块导入包在Py2中工作,但不在Py3中
我有一个项目,是结构如下所示:
scriptA.py
package/__init__.py
scriptB.py
scriptC.py
和__init.py__
包含以下内容:
from scriptB import functionB
from scriptC import functionC
在scriptA
在Py2.7 import package as _package
作品,但未能对Py3.5与错误,ImportError: No module named 'scriptB'
。
如何以兼容Py2和3的方式导入package
?为什么这是不同的?
我想这样做,但import .package as _package
似乎并没有改变任何东西(仍然搞清楚何时使用.
和..
...
我认为你正在做一个隐含的相对导入,这在Py3中是不允许的。如果你从__future__中输入'import absolute_import',这应该关闭隐式的rel。也导入Py2,并引发与Py3相同的错误。 “使用点”如@pbreach所示是一个[显式相对导入](http://www.python.org/dev/peps/pep-0008/#imports)的示例,它与Py2/3兼容。使用明确的相对或绝对导入,而不是隐含的。 – pylang