我有一个本地编写的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] 删除。
我来说两句