繁体   English   中英

从同一层级的文件夹导入

[英]Importing from folders at the same hierarchy level

我一直在这个网站上寻找如何导入存储在同一层次结构级别的文件夹中的 class。 我发现使用..应该会打开一个文件夹。 或者至少,我是这么读的,因为这个假设似乎是错误的。

src/
    folderStrucutre1/
        __init__.py
        fileToImport.py <- contains A
    folderStrucutre2/
        someFile.py
        __init__.py
abc.py

具有上述文件夹结构,其中fileToImport.py包含一个名为A的 class 。 我如何将A导入 someFile.py?

由于包在 python 中的工作方式,您需要将srcabc.py移动到子文件夹中,并为其提供__init__.py

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

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

然后,在someFile.py中,您可以使用来自父 package 的相对导入来导入A

from ..folderStructure1.fileToImport import A

最后,您应该打开 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导入A。
为此,您应该像这样编写someFile.py

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

from folderStrucutre1.fileToImport import A

instance_for_A = A()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM