Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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中正确创建包_Python_Python 3.x_Python Import - Fatal编程技术网

如何在Python中正确创建包

如何在Python中正确创建包,python,python-3.x,python-import,Python,Python 3.x,Python Import,假设我有一个名为foo的文件夹。在该文件夹中是\uuuu init\uuuuuuuuuuuupy,一个名为test的文件夹,以及另一个名为t1.py的Python文件。在文件夹test中有一个名为bar.py的Python文件,在该文件中,我尝试执行以下操作: from foo import t1 这给了我一个错误: ModuleNotFoundError: No module named 'gmuwork' 是否需要向环境变量或sys.path添加某些内容?绝对导入 如果你想用 from

假设我有一个名为
foo
的文件夹。在该文件夹中是
\uuuu init\uuuuuuuuuuuupy
,一个名为
test
的文件夹,以及另一个名为
t1.py
的Python文件。在文件夹
test
中有一个名为
bar.py
的Python文件,在该文件中,我尝试执行以下操作:

from foo import t1
这给了我一个错误:

ModuleNotFoundError: No module named 'gmuwork'
是否需要向环境变量或
sys.path
添加某些内容?

绝对导入 如果你想用

from foo import t1
那么是的,
foo
必须包含在
sys.path
中。 从:

导入包时,Python会在上的目录中进行搜索 sys.path查找包子目录

在这种情况下,请看以下问题:

相对进口 或者,在
bar.py
内部,您应该能够使用

from ..foo import t1
作为一个整体


最后:不管是哪种方式,您都应该在
test
中放入另一个空的
\uuu init\uuuuuupy.py
文件,让Python知道文件夹是一个子包。

第6.4节应该是useful@BradSolomon:你说得对,我要说的是第6.4.2节,特别是包内引用和相对导入。