簡體   English   中英

帶有包名的 Python 導入模塊

[英]Python import module with package name

我一直在閱讀很多關於這個問題的問題,但仍有一些問題。

首先我想解釋一下我想做什么

我有這個文件系統

 Project/
       └──main.py
       └──transformations/
                        └──__init__.py
                        └──translate.py
                        └──rotate.py
                        └──scale.py

main.py 是:

import transformations

if __name__ == "__main__":
    print("Main:")
    transformations.translate.test()
    transformations.rotate.test()
    transformations.scale.test()

每個 test() 只是在控制台上打印“Hello”。

搜索我能夠以某種方式使其工作,為 __ init__.py 提供以下命令行:

import transformations.translate
import transformations.rotate
import transformations.scale

因此,當我嘗試從 main.py 運行代碼時,代碼按預期執行,但 VSCode 給了我任何自動完成建議,所以我不知道我是否正確地做事。

正如你在這張圖片中看到的那樣。當我寫“轉換”時。 vscode 不會提示我自動完成“翻譯”“旋轉”或“縮放”。 如果我仍然編寫模塊的函數調用,它會按預期運行,但 vscode 不會像使用數學模塊中的 sqrt 那樣將其識別為模塊或函數,如第二張圖所示,它將“sqrt”置於黃色.

因此,基本上,總而言之,代碼可以按我的意願工作,但我不確定我是否正確地做事,因為 vscode 自動完成器和顏色格式化程序沒有檢測到包文件夾中的腳本。

提前致謝!

因為您沒有在__init__.py文件中將它們作為模塊導入。 您可以使用from ...import...的形式導入__init__.py文件。 像下面

from transformations import translate
from transformations import rotate
from transformations import scale

希望這對您有所幫助。

暫無
暫無

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

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