190

とりわけ、python スクリプトを起動するスクリプトを実行しようとしています。ImportError: No module named ... が表示されますが、ipython を起動し、インタープリターを介して同じ方法で同じモジュールをインポートすると、モジュールは受け入れられます。

どうすれば修正できますか? Python が PYTHONPATH を使用する方法を理解しようとしましたが、完全に混乱しています。どんな助けでも大歓迎です。

4

20 に答える 20

221

この問題は、コマンド ライン IPython インタープリターが現在のパスを使用する方法と、別のプロセス(IPython ノートブック、外部プロセスなど) を使用する方法が原因で発生します。IPython は、sys.path だけでなく、現在の作業ディレクトリにもある、インポートするモジュールを探します。コマンドラインからインタープリターを起動する場合、操作している現在のディレクトリは、ipython を起動したディレクトリと同じです。

import os
os.getcwd() 

これが真実であることがわかります。

ただし、ipython ノートブックを使用して実行するos.getcwd()と、現在の作業ディレクトリは、ipython_notebook_config.py ファイル (通常はc.NotebookManager.notebook_dir設定を使用) でノートブックに操作するように指示したフォルダーになります。

解決策は、Python インタープリターにモジュールへのパスを提供することです。最も簡単な解決策は、そのパスを sys.path リストに追加することです。ノートブックで、まず次を試してください。

import sys
sys.path.append('my/path/to/module/folder')

import module_of_interest

それでもうまくいかない場合は、インポートへのパスとは関係のない別の問題が発生しているため、問題に関する詳細情報を提供する必要があります。

これを解決するためのより良い(そしてより恒久的な)方法は、PYTHONPATHを設定することです。これにより、インタープリターに python パッケージ/モジュールを探す追加のディレクトリが提供されます。PYTHONPATH をグローバル変数として編集または設定する方法は OS に依存しており、UnixまたはWindowsについてはこちらで詳しく説明しています。

于 2013-03-25T18:24:42.613 に答える
18

__init__.pyPythonプロジェクトの実行中に、エラーを表示するフォルダーの下に名前の空のpythonファイルを作成するだけです。

于 2015-01-14T14:11:26.163 に答える
17

両方が同じインタープリターを使用していることを確認してください。これはUbuntuで私に起こりました:

$ ipython3 -c 'import sys; print(sys.version)'
3.4.2 (default, Jun 19 2015, 11:34:49) \n[GCC 4.9.1]

$ python3 -c 'import sys; print(sys.version)'
3.3.0 (default, Nov 27 2012, 12:11:06) \n[GCC 4.6.3]

そしてsys.path、2人の通訳者の間で異なっていました。これを修正するために、Python 3.3 を削除しました。

于 2015-07-24T01:08:40.487 に答える
9

主な理由は、Python と IPython の sys.paths が異なることです。

lucypark linkを参照してください。私の場合、解決策は機能します。でopencvをインストールすると発生します

conda install opencv

iPython でインポート エラーが発生しました。この問題を解決するには 3 つの手順があります。

import cv2
ImportError: ...

1. 次のコマンドで Python と iPython のパスを確認します

import sys
sys.path

Python や Jupyter とは異なる結果が得られます。2 番目のステップではsys.path.append 、失敗したパスを試行錯誤して修正するために使用します。

2. 一時的な解決策

iPython では:

import sys
sys.path.append('/home/osboxes/miniconda2/lib/python2.7/site-packages')
import cv2

問題はImportError:..解決しました

3.恒久的な解決策

iPython プロファイルを作成し、初期追加を設定します。

bash シェルの場合:

ipython profile create
... CHECK the path prompted , and edit the prompted config file like my case
vi /home/osboxes/.ipython/profile_default/ipython_kernel_config.py

vi で、ファイルに追加します。

c.InteractiveShellApp.exec_lines = [
 'import sys; sys.path.append("/home/osboxes/miniconda2/lib/python2.7/site-packages")'
]

終わり

于 2016-10-20T15:27:26.610 に答える
6

sys.path.append('my-path-to-module-folder')実行しても機能しますが、モジュールを使用するたびに IPython でこれを実行する必要がないように、ファイルに追加できexport PYTHONPATH="my-path-to-module-folder:$PYTHONPATH"ます~/.bash_profile

于 2014-07-29T18:37:11.677 に答える