問題タブ [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.

0 投票する
0 に答える
269 参照

python - Cython: 型付き変数に INFINITY または numpy.inf を代入すると結果が 0 になる

他の場所でできるように、という名前のファイルcdefINFINITY定数を入れたいと思います。私たちが持っていると仮定します:constant.pxdcimportconstant.pxd

ただし、これは、たとえば別の.pyxファイルでは機能しません。

どちらが得られますか:

また、 orINFとして直接定義しようとしました。ただし、それらはすべてゼロになります。np.float32('inf')np.inf

ただし、ファイルにINF = np.float32('inf')入力せずに定義して、期待どおりに使用することはできます。これによりパフォーマンスの問題が発生する可能性があるかどうかはわかりません。.pyxconstant.pyx

そして:

0 投票する
0 に答える
1136 参照

python - Cython C++ ラッパーの未定義シンボル

cppで問題なくビルドできる作業中のプロジェクトがありますcmake。今度は、同じための Python ラッパーを作成する必要があります。そこで、とcythonの間のギャップを埋めることにしました。C++Python

CMakeLists.txtロジックをpyxファイルに記述する代わりに、ライブラリをcmakeそれ自体でコンパイルし、後で Cython ラッパーをラップしてみました。setup.pyファイルは次のとおりです。

call_core.pyxファイルは次のとおりです。

getVal()ヘッダーファイル自体にメソッドを実装すると、このファイルは正常に機能します。しかし、実装を.cppファイルに移動するとすぐに、Cython コンパイラーは次のエラーを表示します。

注: 上記のスニペットは、ファイルに実装されている関数に対して完全に機能し.hます。

0 投票する
1 に答える
3779 参照

python - 別のディレクトリにある Cython コンパイル モジュール

私はcythonの初心者です。

次のディレクトリ構造があります。

helloworld.py :

印刷名.py:

setup.py:

私が抱えている問題はpython setup.py build_ext --inplacecython_programディレクトリで使用してプログラムをコンパイルするときです。プログラムは正常にコンパイルさprintname.cれ、lib フォルダーにファイルが生成されます。

しかし、printname.py と helloworld.py を別のフォルダーに移動して、cython でコンパイルされたコードが実行されていることを確認します。次のエラーが表示されます ImportError: No module named lib.printname

モジュール(lib.printname)もメインhelloworld.pyファイルでコンパイルしないのはなぜですか?

注: helloworld.py と printname.py の両方を同じフォルダーに保持すると、これは正常に機能します。

前もって感謝します。

0 投票する
1 に答える
226 参照

python - cython が 65535 より大きい数値の間違った値を出力する

cython の関数に 65535 より大きい値を渡した数値の奇妙な動作を認識しました。しかし、これはこれらの数値を関数に渡した場合にのみ表示されます。私がそれらを次のように定義すると

すべて正常に動作します。私の問題を明確にするために、この問題を調査するために使用した2つのダミー関数を渡します

そして、「.pyd」ファイルを取得するために呼び出された「setup.py」。

その後、コマンドで「.pyd」ファイルを作成しました

コマンドプロンプトを使用します。使用した c コンパイラは gcc です。

次に「bigNum1」または「bigNum2」のいずれかを呼び出すと、次の出力が得られます。

ご覧のとおり、bigNum2 を使用すると、65535 より大きいすべての数値が正しく表示されません。続いて、この関数の呼び出しを確認します。

私の問題を理解していただければ幸いです。私の推測では、bigNum2 で間違った宣言を行った結果、間違った型になったか、このメソッドに数値を渡す前に何らかの型キャストを行う必要があると思います。

編集:

これは、コマンド プロンプトの処理中に表示されるテキストです。

EDIT2:

cython 0.25.2に付属のWinpythonパッケージ「WinPython 3.6.1.0Qt5-64bit」を使用しています。しかし、最新バージョンを取得するために pip でアップグレードしました。

まず、ここのチュートリアルを使用して .pyd を取得しようとしました。

http://docs.cython.org/en/latest/src/quickstart/build.html

しかし、ビルド中に「エラー: vcvarsall.bat が見つかりません」というエラー メッセージが表示されました。そのため、gcc で Mingw を使用することにしました。ただし、これにより、この投稿で説明されているエラーも作成されました。

ValueError: 不明な MS コンパイラ バージョン 1900

そして、Indrajit Kanjilal の回答で解決しました。そして、私たちは今そこにいます。.pyd ファイルを作成して関数を呼び出すことはできますが、値が 65535 より大きい場合、エラーが発生します。それが役立つことを願っています。