簡體   English   中英

Python - 從不是通過 __init__.py 導入的包中訪問模塊?

[英]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.

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