コンパイルされた拡張機能(OpenCV Pythonバインディングなど)を使用してPythonコードを作成する場合、PyCharmはそれらの可用性を認識していないようです。インポートはツールチップとして「未解決の参照」と灰色の下線でマークされ、オートコンプリートも機能しません(コードですでに使用されている関数名を除く)。
これは間違ったモジュールパスが原因ではありません。コードは起動時にエラーなしで実行されます。また、モジュールをPythonシェルにインポートすると、オートコンプリートが期待どおりに機能し始めます。
そのための解決策はありますか、それともこれはコンパイルされた拡張機能のアーキテクチャ上の制限ですか?この問題に対処できる他のIDEはありますか?
インポートは灰色の下線でマークされ、ツールチップとして「未解決の参照」と表示されます
これはおそらく、PyCharmがインポートしたモジュールを認識できないことを意味します。編集モードでは、PyCharmはインポートされたモジュールのPythonソースの可用性に依存します。モジュールがPythonで書かれていないが、C拡張モジュールである場合、PyCharmは生成します関数プロトタイプを含み、それを完了に使用する「スケルトン」。
シェルモードでは、PyCharmはライブインポートされたオブジェクトを使用して完了しますが、結果はわずかに異なります。
プロジェクト用に選択したPythonインタープリター(ファイル/設定/ Pythonインタープリター))にOpenCVインストールが表示されていることを確認します。インタープリターが正しい場合は、削除してから再度追加してみてください(これには少し時間がかかります。申し訳ありません)。
何も役に立たない場合は、 バグを報告してください 。
PyCharmは現在、IDEのインタープリターに手動で追加されたパスにあるコンパイル済みの拡張機能/バイナリをスキャンしません。 YouTrack でJetbrainsにバグを報告しました。あなたはそれとおそらく私が彼らのディスカッションフォーラムで始めた議論を見たいと思うかもしれません(リンクはバグの説明にあります)。同じ問題に直面しているPyCharmユーザーの場合、YouTrackでこの問題を解決するために投票していただければ幸いです。
ファイル|の「リロード」ボタンをクリックしてみてください設定| IDE設定| Pythonインタープリター。それでうまくいきました。
インポート方法によってpycharmの動作に違いがあることに気づきました。使用:
import cv2
オートコンプリートが機能しない、
と一緒に:
from cv2 import cv2
オートコンプリートは機能します
バイナリをインタプリタのlib-dynloadフォルダにハードリンクする必要がありました。
$ cd /usr/lib/python3.7/lib-dynload
$ Sudo ln /usr/local/lib/python3.7/dist-packages/cv2/python-3.7/cv2.cpython-37m-x86_64-linux-gnu.so cv2.cpython-37m-x86_64-linux-gnu.so
パスは環境によって異なる場合があります。 OSXやWindowsではテストしていませんが、そこでも動作する可能性があります。 lib-dynloadフォルダーはここにあります:
OS X10.8とPyCharm3の私の場合、IDEはPythonのさまざまなインストールを自動的に選択していました。EclipsePydevでこれに気づき、正しいものを選択して期待どおりに機能しました。 2つの違いに気付くのは簡単ではありません:/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python
私はこの質問の指示に従います: WindowsにOpenCVをインストールし、パッケージマネージャーを使用せずにPyCharmで有効にする方法
その後、それは機能せず、私は他の変更なしでpycharm ideを再インストールし、今では完全に機能しています。これが最善の答えではないことはわかっていますが、多くの時間を無駄にしてさまざまな回避策を試した後、これが私の問題を解決するものでした。お役に立てば幸いです。