Python2.7中存在导入错误,但Python3中没有
我在本地编写了一个python包,其结构如下Python2.7中存在导入错误,但Python3中没有,python,python-3.x,python-import,python-2.x,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 当从项目的根目录(树中第一个包的父目录目录)在Python3 virtualenv中使用python-m包运行时,这非常有效 但是,当在Python2.7 vi
package
├── __init__.py
├── __main__.py
├── tests
│ ├── __init__.py
│ └── package_tests.py
└── package
├── __init__.py
├── package.py
当从项目的根目录(树中第一个包的父目录
目录)在Python3 virtualenv中使用python-m包
运行时,这非常有效
但是,当在Python2.7 virtualenv中运行时,我会在\uuuu main\uuuuuuuuuuuuuupy
脚本中得到一个ImportError
,因为它试图从package.py
\uuuu main\uuuuu.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:没有名为package的模块
我需要做哪些更改才能使其与两者兼容
(很明显,这个包实际上并不是包)尽管我寻找了这么长时间的解释,但在发布了这个问题后,我立即找到了解决方案 在查看之后,我发现我只需要使用相对导入 因此,我的
\uuuuu main\uuuuu.py
中的导入行变为
from.package.package import foo,bar
您是否尝试在两种python中打印sys.argv
?有什么不同吗?尝试将内部文件夹包重命名为其他名称,然后查看它是否适用于bothsys。argv在两个版本中都运行良好,是相对导入造成了问题@OlvinRoght