Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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/8/python-3.x/17.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 空的_uinit__uu.py会干扰直接导入并导致错误吗?_Python_Python 3.x - Fatal编程技术网

Python 空的_uinit__uu.py会干扰直接导入并导致错误吗?

Python 空的_uinit__uu.py会干扰直接导入并导致错误吗?,python,python-3.x,Python,Python 3.x,一些代码已经过重构,以使导入直接进行,并且还原的提交等有点混乱。。我得到了一个ImportError,对Python导入系统的理解还不够透彻,不知道为什么。我花了很长时间研究分支之间的比较等,但就是找不到它是什么 给定以下目录结构 our_project/ __init__.py directory1/ __init__.py file1.py file2.py file3.py directory2/

一些代码已经过重构,以使导入直接进行,并且还原的提交等有点混乱。。我得到了一个
ImportError
,对Python导入系统的理解还不够透彻,不知道为什么。我花了很长时间研究分支之间的比较等,但就是找不到它是什么

给定以下目录结构

our_project/
    __init__.py
    directory1/
        __init__.py
        file1.py
        file2.py
        file3.py
    directory2/
        __init__.py
        file3.py
        file4.py
        file5.py
    directory3/
        __init__.py
        file6.py
        file7.py
        file8.py
所有
\uuuu init\uuuu.py
都是空的,除了
我们的\u project/
目录中有一些代码之外

directory3/file7.py顶部的以下内容是否有效,并且不会导致导入错误

from out_project.directory1.file1 import my_function
还是你需要写信

从我们的_项目。目录1导入我的_函数


感觉就像这个空的
\uuuu init\uuuuu.py
在某种程度上干扰了事情。

您的文件夹布局建议的顶级包是
我们的\u项目
。这意味着包含它的文件夹应该位于Python搜索路径中

然后,您可以使用
从我们的\u project.directory1.file1 import my\u函数
从任何地方进行绝对导入

my_project.directory3.file7
模块中,您可以使用相对导入,
From..directory1.file1导入my_函数

但是,如果以脚本形式运行
file7.py
(例如,在命令行上使用
pythonfile7.py
),则相对导入可能不起作用。按文件名运行包中的脚本通常不是一个好主意,因为解释器无法告诉它们应该放在包层次结构中的什么位置。相反,使用
python-mour_project.directory4.file7
以其绝对名称运行模块


这里是到的链接,其中有一个很好的教程,其中介绍了所有内容。

文件夹布局建议的顶级软件包是
我们的\u项目
。这意味着包含它的文件夹应该位于Python搜索路径中

然后,您可以使用
从我们的\u project.directory1.file1 import my\u函数
从任何地方进行绝对导入

my_project.directory3.file7
模块中,您可以使用相对导入,
From..directory1.file1导入my_函数

但是,如果以脚本形式运行
file7.py
(例如,在命令行上使用
pythonfile7.py
),则相对导入可能不起作用。按文件名运行包中的脚本通常不是一个好主意,因为解释器无法告诉它们应该放在包层次结构中的什么位置。相反,使用
python-mour_project.directory4.file7
以其绝对名称运行模块


这里有一个到的链接,其中有一个很好的教程,其中对所有内容进行了解释。

init.py文件只是告诉python将该目录视为python包,因此我相信导入方式取决于系统上安装了哪些包(它搜索PYTHONPATH以查找已安装的包/模块). 如果只安装了示例中的our_项目包,则需要像

 from our_package.directory1.file1 import my_function
您还可以使用相对导入,无论安装了什么,它都可以工作

  from .directory1.file1 import my_function
包的文档如下:

模块搜索路径的信息如下:

init.py文件只是告诉python将该目录视为python包,因此我相信导入方式取决于系统上安装了哪些包(它搜索PYTHONPATH以查找已安装的包/模块)。如果只安装了示例中的our_项目包,则需要像

 from our_package.directory1.file1 import my_function
您还可以使用相对导入,无论安装了什么,它都可以工作

  from .directory1.file1 import my_function
有关软件包的文档如下所示:

模块搜索路径的信息如下:

在您拥有
file7.py
的目录中没有
directory1
。尝试从..directory1.file1导入my_函数中执行
,这应该可以正常工作。如果您看到意外行为,您需要提及该行为。也就是说,显示
ImportError
的完整回溯。很抱歉,关于点,您是对的。修正了路径你改变了问题<代码>来自..directory1.file1导入我的函数
非常好。真的吗?我想我只是写了完整的路径,而不是一个缩写的路径,就像你在Linux中写`/home/folder1/folder2`而不是
。/folder2
,如果你坐在folder1中folder2旁边的另一个文件夹中,你在
file7.py
的目录中没有
directory1
。尝试从..directory1.file1导入my_函数中执行
,这应该可以正常工作。如果您看到意外行为,您需要提及该行为。也就是说,显示
ImportError
的完整回溯。很抱歉,关于点,您是对的。修正了路径你改变了问题<代码>来自..directory1.file1导入我的函数
非常好。真的吗?我想我只是写了完整的路径,而不是一个缩写的路径,就像你在Linux中写“/home/folder1/folder2”而不是
。/folder2
如果你在folder1中folder2tanks旁边的另一个文件夹中,那么你的回答可以减轻我的主要担忧,这是因为
目录3/
中的
\uuuu init\uuuuuuuuuy.py
以某种方式迫使您从目录而不是直接从文件导入谢谢,您的回答减轻了我的主要担忧,这就是
directory3/
中的
\uuuu init\uuuuuuuuupy
以某种方式强制您从目录导入,而不是直接从文件导入