在Python2.7中导入错误,但在Python3中未导入

时间:2019-07-17 11:09:56

标签: python python-3.x python-import python-2.x

我已经在本地编写了一个python包,其结构类似

package
├── __init__.py
├── __main__.py
├── tests
│   ├── __init__.py
│   └── package_tests.py
└── package
    ├── __init__.py
    ├── package.py

当在项目根目录(树中第一个python -m package目录的父目录)的Python3 virtualenv中使用package运行时,此方法非常有用

但是,当在Python2.7 virtualenv中运行时,我在ImportError脚本中看到一个__main__.py,因为它试图从package.py导入函数

__main__.py

import sys
from package.package.package import foo, bar


    def main(args):
        f = foo(args)
        bar(f)


    if __name__ == "__main__":
        main(sys.argv[1:])

错误:

ImportError: No module named package

我需要进行哪些更改以使其与两者兼容?

(显然,该包裹实际上并未称为包裹)<​​/ p>

1 个答案:

答案 0 :(得分:0)

尽管寻找了这么长时间的解释,但在发布此问题后,我立即找到了解决方案。

查看the changes to imports between python 2 and 3后,我发现只需要使用相对导入即可。

因此,我的__main__.py中的导入行变为 from .package.package import foo, bar