Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';不能使用绝对路径导入_Python - Fatal编程技术网

Python Can';不能使用绝对路径导入

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

我有一个非常简单的测试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 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/
的同级。谢谢