Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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 - Fatal编程技术网

Python 从同一层次结构级别的文件夹导入

Python 从同一层次结构级别的文件夹导入,python,python-3.x,Python,Python 3.x,我一直在这个网站上寻找如何导入存储在同一层次结构级别的文件夹中的类。我发现使用。应该会给我带来一个文件夹。或者至少,我是这样理解的,因为这个假设似乎是错误的 src/ folderStrucutre1/ __init__.py fileToImport.py <- contains A folderStrucutre2/ someFile.py __init__.py abc.py src/ 折页结构1/ _

我一直在这个网站上寻找如何导入存储在同一层次结构级别的文件夹中的类。我发现使用
应该会给我带来一个文件夹。或者至少,我是这样理解的,因为这个假设似乎是错误的

src/
    folderStrucutre1/
        __init__.py
        fileToImport.py <- contains A
    folderStrucutre2/
        someFile.py
        __init__.py
abc.py
src/
折页结构1/
__初始值

fileToImport.py由于包在python中的工作方式,您需要将
src
abc.py
移动到子文件夹中,并为其提供一个
\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuupy

更改后的目录结构应如下所示:

package-name/
    package-name/
        folderStructure1/
            __init__.py
            fileToImport.py <- contains A
        folderStructure2/
            __init__.py
            someFile.py
    __init__.py
    abc.py

最后,您应该打开IDE
intellisense
工作的最顶层文件夹(abc.py的父文件夹)

首先,我们需要创建
src
文件夹的绝对路径,而无需在脚本中对其进行硬编码,以使其可移植

将此代码添加到
someFile.py
文件中

import os
src_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
现在,让我们将您的
folderStructure1
目录添加到Python搜索路径中

import sys
sys.path.append(src_path + '/folderStructure1')
现在,您可以使用以下各项:

from fileToImport import Class
object = Class()
您可以将src添加到python搜索路径,然后可以从fileToImport.py导入 为此,您应该编写someFile.py如下:

import sys
sys.path.append("..")   # .. represente the father folder

from folderStrucutre1.fileToImport import A

instance_for_A = A()

可能
import..folderStructure1.fileToImport
?这是否回答了您的问题?这将提供:在Intellisense中,尝试在顶级包之外进行相对导入。是否在
abc.py
旁边添加了
\uuuu init\uuuuuuuuuuuuuupy
文件?我意识到我忘了在示例结构中添加它,因此如果你没有添加它,那就是我的错:P我编辑了图表,将
\uuuu init\uuuuuuuuuuy.py
包括在内,以供将来参考。重点是
某个文件
(以及它旁边或下面的所有其他模块)首先对
someFile
可见。@MisterMiyagi我不明白这是怎么回事,你能详细说明一下吗?@MisterMiyagi还可以将父类中的特定目录附加到
PATH
解决这个问题吗?我根据你的评论编辑了答案。
import sys
sys.path.append("..")   # .. represente the father folder

from folderStrucutre1.fileToImport import A

instance_for_A = A()