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

乔丹·麦基

我有一个本地编写的python包,其结构类似于

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

python -m package从项目的根package目录(该树中第一个目录的父目录)在Python3 virtualenv中运行时,这非常有用

但是,当在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

我需要更改使其与两者兼容吗?

(显然,该程序包实际上并未称为程序包)

乔丹·麦基

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

查看python 2和3之间的导入更改后,我发现我只需要使用相对导入。

所以我的进口线__main__.py变成了from .package.package import foo, bar

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章