簡體   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