簡體   English   中英

從包中導入所有模塊

[英]Import all modules from the package

我有一個包含幾個模塊的Python包。

我可以做什么:

通過修改包中的所有模塊,可以通過修改包的__init__.py來使用程序包中的所有模塊:

#__init__.py
import module1
import module2

然后我只需在我的程序中導入包,並可以通過其全名訪問所有模塊中的類/函數

#My program
import package
a = package.module1.A()

題:

有沒有辦法自動添加導入到__init__.py所以我不需要手動指定它們?

這是另一個可能更接近您想要的答案。

__init__.py您可以添加它以導入包中的所有python文件。

請注意,它不做包..不知道如何。 我正在使用Windows

from os import listdir
from os.path import abspath, dirname, isfile, join
# get location of __init__.py
init_path = abspath(__file__)
# get folder name of __init__.py
init_dir = dirname(init_path)
# get all python files
py_files = [file_name.replace(".py", "") for file_name in listdir(init_dir) \
           if isfile(join(init_dir, file_name)) and ".py" in file_name and not ".pyc" in file_name]
# remove this __init__ file from the list
py_files.remove("__init__")

__all__ = py_files

init文件不能像那樣工作..我想你正在考慮這樣的事情..

如果你有文件結構:

my_program.py
/my_package
    __init__.py
    module1.py
    module2.py

__init__.py您可以編寫此行來編輯import *my_package工作方式

__all__ = ["module1", "module2"]

現在在my_program.py你可以這樣做:

from my_package import *
a = module1.A()

希望有所幫助! 你可以在這里閱讀更多內容: https//docs.python.org/2/tutorial/modules.html#importing-from-a-package

暫無
暫無

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

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