web-dev-qa-db-ja.com

Pythonダッシュまたはハイフン(-)が名前に含まれるモジュール

既存のpythonモジュールに名前がダッシュ、foo-bar.pyがあります

モジュールが共有されているため、モジュール名の変更は避けたいものであり、特別なケースが機能するように、使用されているすべての場所を追跡する必要があります。

名前に通常禁止されている「-」が含まれるモジュールをロードする方法はありますか?

(これはベストプラクティスではないことを理解しています。しかし、この状況では、はるかに大きなアプリケーションのセットを再設計およびテストしないことを望みます。そのような変更。)

72
Skip Huffman

__import__() を使用してそれを行うことができます。例えば:

foobar = __import__("foo-bar")

ただし、代わりにモジュールの名前を実際に変更する必要があります。そうすれば、モジュールのファイル名がプログラムで使用される識別子と異なる混乱を避けることができます。

85
nandhp

私はこの質問がすでに質問者の満足に答えられていることを知っていますが、__import__()を使用して上記のメリットがあると思う別の答えがあります。

import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()

ドキュメントによると:

"This provides an implementation of import which is portable to any 
Python interpreter. This also provides an implementation which is 
easier to comprehend than one implemented in a programming language 
other than Python."

Python 2.7 +のみ

46
NuclearPeon