Python Can';不能使用绝对路径导入
我有一个非常简单的测试Python 3项目,其文件结构如下:Python Can';不能使用绝对路径导入,python,Python,我有一个非常简单的测试Python 3项目,其文件结构如下: test/a.py test/b.py test/__init__.py ,人们说在a.py中,我应该使用绝对路径导入b.py: 从test.b导入* 但是,当我尝试时,会出现以下错误: Traceback (most recent call last): File "a.py", line 1, in <module> from test.b import * ModuleNotFoundError: No
test/a.py
test/b.py
test/__init__.py
,人们说在a.py
中,我应该使用绝对路径导入b.py
:
从test.b导入*
但是,当我尝试时,会出现以下错误:
Traceback (most recent call last):
File "a.py", line 1, in <module>
from test.b import *
ModuleNotFoundError: No module named 'test.b'
回溯(最近一次呼叫最后一次):
文件“a.py”,第1行,在
从test.b导入*
ModuleNotFoundError:没有名为“test.b”的模块
我知道我可以从b import*使用
导入b.py
,但这不是人们推荐的。他们都推荐test.b import*
中的。但我甚至无法让这个简单的示例工作。常见的目录结构如下:
test/a.py
test/b.py
test/__init__.py
run.py
主代码应放入run.py
。当您想在run.py
中导入a.py
时,只需从test.a import*
中写入,或者类似的内容。如果您需要在a.py
中导入b.py
,请按照test.b import*
中告诉您的操作。然后,运行run.py
将得到正确的结果 通用目录结构如下所示:
test/a.py
test/b.py
test/__init__.py
run.py
主代码应放入run.py
。当您想在run.py
中导入a.py
时,只需从test.a import*
中写入,或者类似的内容。如果您需要在a.py
中导入b.py
,请按照test.b import*
中告诉您的操作。然后,运行run.py
将得到正确的结果 正如Martijn在评论中所说,这取决于如何调用a.py
。
如果通过键入python a.py
直接从目录中调用它,则会出现上述错误
但是,如果您这样称呼它:python-m test.a
,而它是test
目录之上的一个目录,那么您的导入就可以正常工作。正如Martijn在评论中所说,这取决于您如何称呼a.py
。
如果通过键入python a.py
直接从目录中调用它,则会出现上述错误
但是,如果您这样称呼它:python-m test.a
在test
目录上方的一个目录中,您的导入将正常工作。是否有test/\uu init\uuuuuuuuuu.py
?是的,抱歉。修正了这个问题。你是如何运行a.py
?你是作为脚本运行a.py
?那么,您的模块搜索路径将不包括test
的父目录,并且它不能作为顶级名称查找。首先,请提供我们需要的信息。这几乎肯定是重复的,这是一个常见问题(包中的文件不应用作脚本)。是否存在test/\uu init\uuuuuuuuuuuuuuuupy
?是的,抱歉。修正了这个问题。你是如何运行a.py
?你是作为脚本运行a.py
?那么,您的模块搜索路径将不包括test
的父目录,并且它不能作为顶级名称查找。首先,请提供我们需要的信息。这几乎肯定是重复的,这是一个常见的问题(包中的文件不应该用作脚本)。因此,要从test.b import*
执行,run.py
需要是test/
的同级。谢谢,我明白了。因此,要从test.b import*
执行,run.py
需要是test/
的同级。谢谢