【发布时间】:2019-07-17 11:09:56
【问题描述】:
我有一个本地编写的 python 包,其结构类似于
package
├── __init__.py
├── __main__.py
├── tests
│ ├── __init__.py
│ └── package_tests.py
└── package
├── __init__.py
├── package.py
当在项目根目录(该树中第一个 package 目录的父目录)的 Python3 virtualenv 中使用 python -m package 运行时,这非常有用
但是,当在 Python2.7 virtualenv 中运行时,我在 __main__.py 脚本中得到一个 ImportError,因为它试图从 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 中打印
sys.argv吗?有什么区别吗? -
尝试将内部文件夹包重命名为其他名称,看看它对两者都有效
-
sys.argv 在两个版本中都能正常工作,问题是相对导入@OlvinRoght
标签: python python-3.x python-import python-2.x