[Python]ハイフン(-)が含まれるスクリプトファイルをインポートする

Pythonでハイフン(-)が含まれるスクリプトファイルはimport文でインポート出来ないっぽい。例えばこのようなスクリプトファイルがあって

Python 3.4.2 (default, Oct  8 2014, 19:29:32)
Type "copyright", "credits" or "license" for more information.

IPython 2.3.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: cat test-dayo.py
# -*- coding: utf-8 -*-

def import_module():
    print(__name__)

if __name__ == '__main__':
    import_module()

importしようとすると、IPythonの場合、ハイフンが含まれたスクリプトファイルが補完されない(IPython賢い)

n [2]: import te
telnetlib  tempfile   termios    test       tests      textwrap

In [2]: import test
test   tests

無理やりimportしようとすると怒られる(四則演算と誤認識されるのだろうか?)

In [2]: import test-dayo
  File "<ipython-input-2-77e219196389>", line 1
    import test-dayo
               ^
SyntaxError: invalid syntax

なので __import__ を使う

In [3]: module = __import__('test-dayo')

In [4]: module.import_module()
test-dayo

ハイフンは含めない方が無難でしょうか

参照
Pythonでスクリプトを動的にimportする - Qiita


  • このエントリーをはてなブックマークに追加
PAGE TOP