Pythonでプログラムを記述して、実行した際に、
>>> from marionette import Marionette
Traceback (most recent call last):
File “”, line 1, in
ImportError: No module named <モジュール名>
または
ImportError: cannot import name <モジュール名>
というエラーが出力されることがある。
これは、そのようなモジュールが見つけられないことを示している。そのため、以下のような対処法が考えられる。
インストールされているかを確認
まず、pipなどで追加モジュールをインストールした場合には、
<pythonインストールディレクトリまたはvirtualenv_dir>\Lib\site-packages
配下にモジュールのディレクトリがあって、インストールされているかを確認する。また、pythonのパッケージ管理の仕組みであるpipのコマンドを使って、
pip show <インストールモジュール名>
で、以下のように、インストールされているかどうかを確認することもできる。
>>pip show <モジュール名>
Name: marionette-driver
Version: 2.2.0
Summary: Marionette Driver
Home-page: https://wiki.mozilla.org/Auto-tools/Projects/Marionette
Author: Auto-tools
Author-email: tools-marionette@lists.mozilla.org
License: MPL
Location: c:\python\auto27\lib\site-packages
Requires: mozrunner, mozversion
パスが通っているかを確認
pipコマンドで確認できるのであれば、たいていは大丈夫だと思われるが、上記の場所にディレクトリはあるのにエラーが出る場合は、モジュールの検索パスに、上記のモジュールのディレクトリが存在していないことがある。
その場合は、Pythonの対話コマンドプロンプトなどで、
>>import sys
>>print sys.path
のようにすると、現在通っているパスが確認できる。
上記コマンドで表示されるパスの中にモジュールのディレクト入りが入っていない場合は、パスに含めるようにすると良い。
その方法も下記のように、いくつかある。後者の方がおすすめ。
pythonは、モジュールの検索パスに環境変数「PYTHONPATH」を利用するので、これに設定する。
ただし、virtualenvやvenvなどでバージョンやインストールするモジュールのバージョンを複数管理している場合は、すべてに環境変数を設定すると共有されてしまうので、望ましくないと思う。
その場合は、次のように、pyコードの最初でモジュール検索パスにAppendしてあげるとOK。
import sys
sys.path.append('/path/to/hogehoge')