[解決済み] パッケージ内のPythonモジュールの名前をリストアップする標準的な方法はありますか?
2022-03-09 15:20:39
質問
パッケージ内の全モジュールの名前を一覧表示する簡単な方法はありますか?
__all__
?
例えば、このようなパッケージがあった場合。
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
このようなことをするための標準的な、あるいはビルトインの方法はないものでしょうか。
>>> package_contents("testpkg")
['modulea', 'moduleb']
手動でのアプローチは、パッケージのディレクトリを見つけるために、モジュールの検索パスを繰り返し実行することです。 そして、そのディレクトリのすべてのファイルをリストアップし、ユニークな名前のpy/pyc/pyoファイルをフィルタリングし、拡張子を取り除き、そのリストを返します。 しかし、これはモジュールのインポート機構がすでに内部で行っていることのために、かなりの量の作業のように思えます。 その機能はどこかで公開されていますか?
解決方法は?
もしかしたら、これがあなたの探しているものになるかもしれませんよ?
import imp
import os
MODULE_EXTENSIONS = ('.py', '.pyc', '.pyo')
def package_contents(package_name):
file, pathname, description = imp.find_module(package_name)
if file:
raise ImportError('Not a package: %r', package_name)
# Use a set because some may be both source and compiled.
return set([os.path.splitext(module)[0]
for module in os.listdir(pathname)
if module.endswith(MODULE_EXTENSIONS)])
関連
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] Pythonで複数行のコメントを作成する方法はありますか?
-
[解決済み] ローカルにインストールされたPythonモジュールの一覧を取得するにはどうしたらいいですか?
-
[解決済み] リストの要素を値で削除する簡単な方法はありますか?
-
[解決済み] Pythonモジュールのバージョンを確認する方法は?
-
[解決済み] PythonモジュールとPythonパッケージの違いは何ですか?
-
[解決済み】Pythonパッケージにバージョンを埋め込む標準的な方法?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
Pythonによるjieba分割ライブラリ
-
python implement mysql add delete check change サンプルコード
-
Pythonショートビデオクローラーチュートリアル
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法