web-dev-qa-db-ja.com

Pythonのパッケージからすべての関数をインポートするにはどうすればよいですか?

私はそのようなディレクトリを持っています:

python_scripts/
     test.py
     simupy/
          __init__.py
          info.py
          blk.py

'blk.py'および 'info.pyは、いくつかの関数を含むモジュールであり、そのうちの1つは関数' blk_func(para) 'です。

'__init__。py'内に、次のコードを含めました。

import os
dir_path = os.path.dirname(os.path.realpath(__file__))

file_lst = os.listdir(dir_path)
filename_lst = list(filter(lambda x: x[-3:]=='.py', file_lst))
filename_lst = list(map(lambda x: x[:-3], filename_lst))
filename_lst.remove('__init__')

__all__ = filename_lst.copy()

'test.py'内の関数 'blk_func(para)'、およびパッケージ内の他のすべての関数にアクセスしたいと思います。したがって、次のコード行を「test.py」に挿入してパッケージをインポートします。

from simupy import*

ただし、この関数を使用するには、次のことを行う必要があります。

value = blk.blk_func(val_param)

関数名を呼び出すだけで「test.py」の関数に直接アクセスできるように、パッケージsimupyをインポートするにはどうすればよいですか?つまり.

value = blk_func(val_para)
4
Tian

とても簡単

___init__.py_:

_from simupy.blk import *
from simupy.info import *
_

ところで、私の2セントだけですが、パッケージの関数を___init__.py_にインポートしたいが、___main__.py_でアクションを実行したいようです。

お気に入り

___init__.py_:

_from simupy.blk import *
from simupy.info import *
_

___main__.py_:

_from simupy import *

# your code
dir_path = ....
_

これは最もPython的な方法です。その後、次のことができるようになります。

  • スクリプトを適切なPythonモジュール:_python -m simupy_として実行します
  • モジュールをライブラリとして使用します:import simupy; print(simupy.bar())
  • 特定のパッケージ/関数のみをインポートします:_from simupy.info import bar_。

私にとってそれはPythonの美しさの一部です..

4
Arount