4

これは私の側のインストールの失敗であることを認識しており、この面白くも重要でもない質問をあなたの足元に置いて申し訳ありませんが、私の人生では、何が問題なのかを理解することができず、アイデアが尽きる。誰かがすぐに明白なことを指摘できることを願っています。

(Kern の line_profiler を使用して) Python スクリプトをプロファイリングしようとしていますが、スクリプトは netCDF4 モジュールをロードする必要があります。line_profiler と netCDF4 の両方を pip でインストールしました。インストールされているパッケージのリストの pip をキューに入れると、両方とも存在し、更新されていると報告されます。

プロファイラーを使用しなくても、スクリプトは問題なく実行されます。つまり、netCDF4 モジュールが適切に読み込まれます。ただし、「myscript」ディレクトリから「kernprof -l -v myscript.py」を実行すると、次のエラーが発生します。

Traceback (most recent call last):
  File "/usr/local/bin/kernprof", line 9, in <module>
   load_entry_point('line-profiler==1.0', 'console_scripts', 'kernprof')()
  File "Library/Python/2.7/site-packages/kernprof.py", line 221, in main
   execfile(script_file, ns, ns)
  File "myscript.py", line 5, in <module>
   from netCDF4 import Dataset
ImportError: No module named netCDF4 

/opt/local/bin/python のインストールから Python を実行しています。これは、PATH の最初にリストされています。

では、いずれにせよ、設定したデフォルトの Python バージョンが PATH の最初に表示されるものと同じであり、そのデフォルト バージョンが netCDF4 モジュールにアクセスできる場合、なぜ line_profiler にアクセスできないのでしょうか?

4

1 に答える 1

4

kernprof必要なモジュールがすべて含まれていないデフォルトの python インストールにリダイレクトするシバンがあります。

次のようにして、「完全な」python インストールの使用を強制できます。

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/‌​Resources/Python.app‌​/Contents/MacOS/Pyth‌​on /usr/local/bin/kernprof -l -v myscript.py

したがって、shebang は無視され、必要なすべてのパッケージを含むバージョンの python でプロファイラーを実行します。

于 2017-01-03T22:21:06.693 に答える