私はする必要がありますファイル名のすべてのスペースを取り除いてインポートしますか、それともimport
にスペースがあることを伝える方法はありますか?
ファイル名からスペースを削除する必要があります。ファイル名はインポートされたモジュールの識別子として使用されるため(つまり、foo.py
はfoo
としてインポートされます)、Python識別子にはスペースを含めることができません。これはimport
ステートメントでサポートされています。
本当にが何らかの理由でこれを行う必要がある場合は、__import__
関数を使用できます。
foo_bar = __import__("foo bar")
これにより、foo bar.py
がfoo_bar
としてインポートされます。これはimport
ステートメントとは少し動作が異なるため、回避する必要があります。
from foo_bar import *
(ただしアンダースコアの代わりにスペースを使用)のようなことをしたい場合は、execfile(docs here )を使用できます。
execfile("foo bar.py")
ただし、ソースファイル名にスペースを使用しないことをお勧めします。
importlib.import_module
のラッパーである__import__
関数を使用することもできます。
foo_bar_mod = importlib.import_module("foo bar")
または
foo_bar_mod = importlib.import_module("path.to.foo bar")
Banksの回答に追加するために、ディレクトリの1つに保存していない別のファイルをインポートしている場合Pythonインポートディレクトリをチェックし、パスにディレクトリを追加する必要があります
import sys
sys.path.append("absolute/filepath/of/parent/directory/of/foo/bar")
呼び出す前に
foo_bar = __import__("foo bar")
または
foo_bar = importlib.import_module("foo bar")
これは、import <module>
を使用してインポートする場合は不要です。ここでPythonは、モジュールの現在のディレクトリをチェックします。モジュールを同じディレクトリ、たとえば使用
import os,sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
foo_bar = __import__('foo_bar')
これにより、自分の変な名前のファイルまたはPythonファイルを手動でダウンロードしたファイルをインポートしようとする他の誰かが救うことを願っています:)