既存のpythonモジュールに名前がダッシュ、foo-bar.pyがあります
モジュールが共有されているため、モジュール名の変更は避けたいものであり、特別なケースが機能するように、使用されているすべての場所を追跡する必要があります。
名前に通常禁止されている「-」が含まれるモジュールをロードする方法はありますか?
(これはベストプラクティスではないことを理解しています。しかし、この状況では、はるかに大きなアプリケーションのセットを再設計およびテストしないことを望みます。そのような変更。)
__import__()
を使用してそれを行うことができます。例えば:
foobar = __import__("foo-bar")
ただし、代わりにモジュールの名前を実際に変更する必要があります。そうすれば、モジュールのファイル名がプログラムで使用される識別子と異なる混乱を避けることができます。
私はこの質問がすでに質問者の満足に答えられていることを知っていますが、__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
+のみ