在Python 3中导入时出错
我有Python 3的结构:在Python 3中导入时出错,python,python-3.x,Python,Python 3.x,我有Python 3的结构: my_module/ my_module/ any_name.py tests/ tests.py 然后,我尝试在tests.py中使用: from my_module.any_name import my_class 我收到了错误信息: ModuleNotFoundError: No module named 'my_module' 有人知道问题出在哪里吗?首先,让my_module和my_module/my_
my_module/
my_module/
any_name.py
tests/
tests.py
然后,我尝试在tests.py中使用:
from my_module.any_name import my_class
我收到了错误信息:
ModuleNotFoundError: No module named 'my_module'
有人知道问题出在哪里吗?首先,让
my_module
和my_module/my_module
非常混乱,但我们忽略这一点
为了使my_模块
工作,外部my_模块
必须位于您的sys.path
上
因此,如果您这样做:
$ cd tests
$ python tests.py
…然后您的sys.path
将按照您通常的路径,加上my_模块/tests
。它不包括my\u模块
,因此您在任何地方都找不到my\u模块/my\u模块
解决方法包括:
- 有一个顶级的
,它从tests导入tests.py和test.py
tests.run()
- 从顶级
目录运行代码作为my_模块
,而不是从python-m tests.tests
运行代码作为my_模块/tests
python tests.py
- 手动将
插入tests/tests.py
)加入os.path.join(uuu path_uuu,../myu模块
sys.path
- 使用
/setuptools
,而不是尝试手动执行所有操作pkg\u资源
- 做所描述的老套的事情。(除非您需要与Python 2.7或3.2或旧版
/distribute
版本的distutils
兼容,否则您确实不想这样做)pkg\u资源
\uuuu init\uuuu
文件在哪里?python3 tests/tests.pyI不创建任何init文件。有必要吗?谢谢!运行python-m测试。测试修复我的测试。但是现在我的代码中的其他导入被破坏了。当我在我的\u项目的其他文件中使用import any\u name时,我需要输入.any\u name,当我运行程序“ImportError:尝试在没有已知父包的情况下进行相对导入”时