[英]Python - access module from package that is not imported through __init__.py?
我正在使用一個帶有__init__.py
包,該包僅從模塊導入一個變量,但未公開整個模塊本身。 有沒有辦法訪問該模塊?
讓我們看看這種情況:
全包:
test_package/
├── __init__.py
└── test_me.py
現在內容:
__init__.py :
from .test_me import test_me
test_me.py :
STATIC = 'static'
class Test:
pass
test_me = Test()
現在,如果我導入包test_package
。 我只能訪問變量test_me
,它是Test
類的一個實例。 雖然我無法訪問STATIC
變量,因為模塊本身沒有暴露。
在這種情況下,有沒有辦法訪問test_me
模塊,而不僅僅是它的一個變量?
PS 如果我使用sys
將路徑直接附加到該包的模塊,它會在我嘗試導入時拋出該模塊不存在的錯誤。
如果將包目錄添加到路徑中,Python 可以導入該目錄中的任何文件,就好像它本身就是一個模塊一樣。
import sys
sys.path.extend(test_package.__path__)
import test_me
print(test_me.STATIC)
您需要通過__init__.py
導入它們,因此將其內容更改為:
from .test_me import test_me, STATIC
現在以下將起作用:
import test_package
print(test_package.STATIC)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.