簡體   English   中英

如何按名稱導入自定義python包

[英]How to import custom python package by name

我創建了一個名為“custom_module”的文件夾,我在文件夾中有__init__.py,其中包含:

__all__ = [
        'Submodule1',
        'Submodule2'
]

從我閱讀的文檔中我應該能夠調用import custom_module並獲取對包的訪問權限,但是這不會發生。 如何讓python識別我的包? 我正在使用python 3.2

更新:包不在python文件夾中。 python環境如何找到它,因此我可以通過名稱成功導入它。

您有兩個截然不同的概念: 模塊

您認為模塊是一個模塊 :包含類,變量等的Python腳本。 您可以通過其文件名導入它,然后可以訪問其命名空間中的變量。

是一組模塊,它們在文件夾中組合在一起。 如果文件夾包含名為__init__.py的文件,Python將允許您導入整個文件夾,就像它是一個模塊一樣。 這將運行__init__的代碼,但不一定會導入該文件夾中的所有模塊。 (這是一個深思熟慮的設計選擇:包通常非常大,導入所有模塊可能需要很長時間。)

默認情況下,導出的唯一內容(如package.thing )是__init__定義的變量。 如果您希望submodule可用作package.submodule ,則需要在__init__導入它。

__all__是一個相關的概念。 簡而言之,它定義了from package import * ,因為Python不容易計算出應該是什么。 你通常不需要它。

sys.path保存Python搜索路徑。 在嘗試import模塊和包之前,請將其設置為包含您的路徑:

import sys
sys.path.insert(0, 'your_path_here')
import custom_module

Python文檔和此問題中的更多細節

暫無
暫無

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

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