29

コンパイルされた拡張機能 (OpenCV Python バインディングなど) を使用して Python コードを記述する場合、PyCharm はそれらの可用性を認識していないようです。インポートには灰色の下線が付き、ツールチップとして「未解決の参照」と表示され、オートコンプリートも機能しません。(コードで既に使用されている関数名を除く)。

これは間違ったモジュール パスが原因ではなく、開始時にコードがエラーなしで実行されます。また、モジュールを Python シェルにインポートすると、オートコンプリートが期待どおりに機能し始めます。

そのための解決策はありますか、またはこれはコンパイルされた拡張機能のアーキテクチャ上の制限ですか? この問題に対処できる他の IDE はありますか?

4

10 に答える 10

19

インポートには灰色の下線が付き、ツールチップとして「未解決の参照」と表示されます

これはおそらく、PyCharm がインポートしたモジュールを認識できないことを意味します。編集モードでは、PyCharm はインポートされたモジュールの Python ソースの可用性に依存します。モジュールが Python で書かれておらず、C 拡張モジュールである場合、PyCharm は関数プロトタイプを含む「スケルトン」を生成し、それを使用して補完します。

シェルモードでは、PyCharm はライブでインポートされたオブジェクトを使用して補完しますが、結果はわずかに異なります。

プロジェクト用に選択した Python インタープリター (ファイル / 設定 / Python インタープリター) に対して、OpenCV インストールが表示されていることを確認してください。インタープリターが正しい場合は、それを削除して再度追加してみてください (これには少し時間がかかります。申し訳ありません)。

何も解決しない場合は、バグを報告してください。

于 2011-03-04T16:01:18.057 に答える
6

バイナリをインタープリターのフォルダー 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 フォルダーは次の場所にあります。 プロジェクトの構造

于 2020-02-15T12:06:45.877 に答える
3

ファイル | の「リロード」ボタンをクリックしてみてください。設定 | IDE 設定 | Python インタープリター。それは私のために働いた。

于 2012-03-12T16:47:07.847 に答える
3

PyCharm は現在、IDE のインタープリターに手動で追加されたパスにあるコンパイル済みの拡張機能/バイナリをスキャンしません。YouTrackで Jetbrains にバグを報告しました。それと、おそらく私が彼らのディスカッション フォーラムで開始したディスカッションを参照してください (リンクはバグの説明にあります)。同じ問題に直面している PyCharm ユーザーである場合は、YouTrack でこの問題を解決するために投票していただければ幸いです。

于 2011-03-17T13:30:50.837 に答える
-1

「私にとってはうまくいく」という答えは嫌いですが、私の環境の詳細は、あなたの問題を特定するのに役立つかもしれません。

これまで PyCharm を使用したことはありませんが、Macports opencv + python26 を使用して、PyCharm 1.1.1 を使用して Mac 10.6.6 でテストを行いました。オートコンプリートは初めてうまくいきました。また、PyCharm を閉じて再実行したところ、何もせずにオートコンプリートできました。cjson、procnameなど、試した他のネイティブ拡張のオートコンプリートにも問題はありませんでした。

オートコンプリートでopencvをインポートするPycharm 1.1.1.

おそらく、プラットフォーム固有の問題 (Windows?) か、古いバージョンの PyCharm に影響するバグでしょうか?

于 2011-03-04T13:12:08.053 に答える