簡體   English   中英

從“並行”子目錄導入另一個目錄中的模塊

[英]Import module in another directory from a “parallel” sub-directory

我希望有一個看起來像這樣的層次結構(它必須看起來像這樣)

main_folder\
    main.py
    domain_sub_directory\
        __init__.py
        domain.py
    ui_sub_direcotory\
        __init__.py
        menu.py

我需要激活ui.py frome main.py,然后從menu.py訪問domain.py. 我怎樣才能做到這一點 ?

我主要做了這個:

    import ui_sub_directory.ui

這在ui中:

    import domain_sub_directory.domain

但是UI模塊沒有看到域模塊。

我究竟做錯了什么 ?

BTW我還需要導入我正在使用的課程嗎? 這和之間有什么區別:

from x import y 

*編輯*為那些不理解我想從中導入的人:

folder1 /folder2 /folder3 /module1 

我想導入這個:

folder1 /folder2 /module2

你問了import語句的區別。 它的部分問題是對象將在其下導入的命名空間,也是限制導入的確切代碼量的一種方法。

import os
from os import path

os和os.path都是模塊。 第一個導入整個os模塊及其所有子模塊。 這可能超出您的需要,對於大型庫可能不需要開銷。 雖然您仍然可以通過os.path訪問路徑

第二種形式是有選擇地僅導入路徑模塊的方法。 此外,它不是在os命名空間下進入您的代碼,而是現在作為path存在於根級別。

雖然此鏈接從父目錄導入腳本確實告訴您需要知道的一切,但這里有一些更具體的信息:

# this will make your package available on your pythonpath
sys.path.append("/path/to/main_folder")

然后你的各種腳本可以引用所有相對於main_folder下的其他模塊,例如:

from ui_sub_direcotory import menu

from domain_sub_directory import domain

import main

這些都是包內的有效導入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM