問題タブ [cythonize]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - Anaconda cython ビルド モジュールが間違った GLIBCXX を探している
状況を説明しましょう。
システム g++ を使用して C++ ライブラリをコンパイルしました (Linux で)。次に、コンパイル済みライブラリの関数を呼び出す cython モジュールを構築しました。cython モジュールのビルドは、anaconada venv の下で行われました (ただし、venv 内に g++ はインストールされていません。したがって、cython はシステム gcc/g++ を使用していたに違いありません)。同じ anaconda venv の下で、cython モジュールをインポートすると、次のようなエラーが発生します。
システム g++ によってコンパイルされた c ライブラリ (libc_rd_halo.so) が anaconda g++ ライブラリを探しているようです。そして、anaconda venvにg ++がインストールされていません。
anaconda g++ を使用して c ライブラリを最初からコンパイルすることで問題を解決できます。cython モジュールを再度ビルドすると、モジュールをインポートできます。しかし、anaconda cython にシステム コンパイラを使用させ、モジュールのインポート時にシステム コンパイラ ライブラリを検索させたいと考えています。
私の質問は次のとおりです。
anaconda cython がデフォルトでローカルの anaconda g++ を検索するのに、システム コンパイラは検索しないのはなぜですか? そうするメリットはありますか?
anaconda cython でシステム コンパイラ ライブラリを探すにはどうすればよいですか?
python - Cython : .pyd ファイルをインポートするとエラーが返されます (init 関数がない?)
Cython を使用して Python コードを効率的にコンパイルし、高速化する方法を学んでいます。
これが私がこれまでに行ったことです:
- という Python ファイルを作成し、その
math_code_python.py
中に 4 つの単純な関数を入れました。 - そのファイルを として保存しました
math_code_cython.pyx
。 - というセットアップファイルを作成しました
setup.py
。 - を入力
python C:\Users\loic\Documents\math_code\setup.py build_ext --inplace
しましたCommand Prompt
。 math_code_cython.cp36-win_amd64.pyd
名前を変更したというコンパイル済みファイルを取得しましたmath_code_pyd.pyd
。最後に、その中
/li>test_math_code.pyd
だけimport math_code_pyd
で呼び出される Python ファイルを作成しました。このファイルを実行すると、次のメッセージが表示されました。
私はいくつかの調査を行いましたが、これらの投稿のおかげで、次のものを提供する必要があることがわかりましたinit function
。
- https://bytes.com/topic/python/answers/694888-constructor-initialization-function-module
- Python 3.5 ImportError: 動的モジュールがモジュール エクスポート関数を定義していません (PyInit_cv2)
私の質問は次のとおりです。どうすればいいですか?次のようなものの最後に関数を配置する必要がありmath_code_python.py
ますか?
Python の私のバージョン: