とりわけ、python スクリプトを起動するスクリプトを実行しようとしています。ImportError: No module named ... が表示されますが、ipython を起動し、インタープリターを介して同じ方法で同じモジュールをインポートすると、モジュールは受け入れられます。
どうすれば修正できますか? Python が PYTHONPATH を使用する方法を理解しようとしましたが、完全に混乱しています。どんな助けでも大歓迎です。
とりわけ、python スクリプトを起動するスクリプトを実行しようとしています。ImportError: No module named ... が表示されますが、ipython を起動し、インタープリターを介して同じ方法で同じモジュールをインポートすると、モジュールは受け入れられます。
どうすれば修正できますか? Python が PYTHONPATH を使用する方法を理解しようとしましたが、完全に混乱しています。どんな助けでも大歓迎です。
この問題は、コマンド ライン 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についてはこちらで詳しく説明しています。
__init__.py
Pythonプロジェクトの実行中に、エラーを表示するフォルダーの下に名前の空のpythonファイルを作成するだけです。
両方が同じインタープリターを使用していることを確認してください。これは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 を削除しました。
主な理由は、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")'
]
終わり
sys.path.append('my-path-to-module-folder')
実行しても機能しますが、モジュールを使用するたびに IPython でこれを実行する必要がないように、ファイルに追加できexport PYTHONPATH="my-path-to-module-folder:$PYTHONPATH"
ます~/.bash_profile
。