亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Python 3 中將類從一個子文件夾導入到另一個子文件夾中?

如何在 Python 3 中將類從一個子文件夾導入到另一個子文件夾中?

慕娘9325324 2021-09-11 10:14:52
所以,我有以下文件夾結構;Root/--outlook/----outlook.py--test/----test.pyoutlook.py包含一個名為Outlook.我正在嘗試按如下方式導入文件中的Outlook類test.py-from .outlook import Outlookoutlook = Outlook()我正在從 Root 文件夾運行腳本 - python test/test.py這導致錯誤 -Traceback (most recent call last):  File "test/test.py", line 1, in <module>    from .outlook.outlook import OutlookModuleNotFoundError: No module named '__main__.outlook'; '__main__' is not a package請幫忙。
查看完整描述

2 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

僅當子模塊從父模塊中加載時,相對導入路徑才有效:


from Root.test.test import some_function

如果您想將來自兩個不同子模塊的組件一起使用并作為獨立腳本使用,我建議使用非相對導入路徑:


from Root.outlook.outlook import Outlook

您需要將模塊 Root 放在 PYTHON_PATH 環境變量中包含的文件夾中


也不要忘記將init .py添加到所有文件夾


some_directory/

    Root/

        __init__.py

        outlook/

            __init__.py

            outlook.py

        test/

            __init__.py

            test.py

EDIT1:

根據您想從 test.py 內部導入的方式,您可能會面臨 2 種不同的情況


from Root.outlook.outlook import Outlook

將要求 python 可以訪問“Root”目錄


PYTHON_PATH="...:...:/path_to_some_directory_that_contains_Root"

盡管


from outlook.outlook import Outlook

將需要


PYTHON_PATH="...:...:/path_to_Root"

... 表示環境變量中已經存在的其他路徑,您應該保持原樣。

'添加到 PYTHON_PATH 代表手動方式快速達到您想要的結果。實際上,在使用模塊時應該做的是安裝它,通過在 Root 目錄和命令中使用帶有 disutils 的“setup.py”腳本


python setup.py install


查看完整回答
反對 回復 2021-09-11
  • 2 回答
  • 0 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號