問題タブ [python-c-extension]
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.
c++ - Python の拡張中に C++ 機能を使用できますか?
Python のマニュアルには、C と C++ の両方で Python のモジュールを作成できると書かれています。C++ を使用する場合、クラスやテンプレートなどを利用できますか? 残りのライブラリーやインタープリターとの互換性がなくなるのではないでしょうか?
python - valgrind で python を実行すると、メモリに関する多くのエラーが表示されるのは正常ですか?
Python C 拡張機能でメモリ クラッシュをデバッグし、valgrind でスクリプトを実行しようとしました。次のような単純なコマンドを実行した場合でも、valgrind の出力に「ノイズ」が多すぎることがわかりました。
次のような繰り返し情報でいっぱいの Valgrind 出力:
Slackware 12.2 上の Python 2.5.2。
それは正常な動作ですか?もしそうなら、おそらくvalgrindはPythonでメモリエラーをデバッグするための不適切なツールですか?
python - distutils がビルドに使用するアーキテクチャ文字列を取得するには?
を使用して ac 拡張機能をビルドするpython setup.py build
と、結果は次の名前のディレクトリの下に作成されます
以降の部分lib.
はOS、CPU、Pythonのバージョンによって変わります。
現在のアーキテクチャに適した文字列に Python からアクセスする方法はありますか? うまくいけば、distutils が作成するものと一致することが保証されます。
python - Python C-API モジュール終了ハンドラー - atexit と同等ですか?
私はPythonバージョン2.6.4を使用しています
拡張モジュールを終了/アンロードするときに、C ライブラリから呼び出さなければならない関数があります。C拡張モジュールのatexitに相当するものは何ですか?
python - Pyrexで初期化されたC配列を定義する方法は?
初期化されたC配列をPyrexで定義したいのですが、たとえば次のようになります。
Pyrexでは何が同等になりますか?
ただ配列は
しかし、どうすれば自分の値で初期化できますか?
python - python c 拡張機能、mac os での dlopen の問題
バイナリ ライブラリ (.a) およびヘッダーとして配布されているライブラリを使用し、それに対していくつかの C++ コードを記述し、結果を Python モジュールにラップしたいと考えています。
私はこれをここでやった。
問題は、このモジュールを Mac OSX (10.5 と 10.6 を試しました) にインポートすると、次のエラーが発生することです。
これは、Carbon フレームワークで定義されたシンボルが適切に解決されていないように見えますが、どうすればよいかわかりません。のパラメータ-framework Carbon
を指定しているので、他に何をすべきかわかりません。distutil.core.Extension
extra_link_args
どんな助けでも大歓迎です。
アップデート:
setup.py によって生成されるコンパイル行は次のようになります。
リンカー行は次のようになります。
otool
レポート:
更新 2 : MacOS 10.5 では、dlopen フラグをデフォルトの から に変更RTLD_NOW
するRTLD_LAZY
と、問題が解決します。ただし、これは Mac OS 10.6 では機能しません。
10.6 では、次のシーケンスでライブラリを適切に実行できますが、理由はわかりません。
- python setup.py ビルド -v
- リンカー行 (setup.py によってコンソールに出力されます) を手動で再度実行します。
- python setup.py インストール
これを適切に機能させる方法については、まだ良い答えを探しています。ありがとう!
python - Windows で Python 2.7 用の lxml をビルドする
Windows 64 ビット マシンで Python 2.7 用の lxml をビルドしようとしています。Python 2.7 バージョンの lxml 卵が見つかりませんでした。だから私はソースからコンパイルしています。このサイトの指示に従っています
静的リンクセクションの下。エラーが発生しています
誰でもこれで私を助けることができますか? Microsoft Visual Studio があるようにパスを設定しようとしました..コマンドラインから vcvarsall.bat を実行できます..しかし、Python に問題があります
python - Python C API: PyObject タイプをオンにする
私は Python を C++ に接続するためのコードをいくつか持っていますが、これは正常に動作しますが、それを見るたびに、それを行うためのより良い方法があるに違いないと思います。C++ 側には、固定範囲の基本型 (int、real、string、バリアントのベクトルなど) を処理できる「バリアント」型があります。Python API を使用して、同等の Python 型から変換するコードがいくつかあります。次のようになります。
問題は、チェーンされた if-else if です。switch ステートメント、または型識別子をキーとする作成関数のテーブルまたはマップを呼び出しているようです。言い換えれば、私は次のようなものを書くことができるようにしたい:
API ドキュメントの概要に基づいて、ここで「typeID」を直接取得する最善の方法は明らかではありませんでした。私はこのようなことができると思います:
これにより、タイプ情報がすぐに得られるようですが、それを使用して、関心のある限られたタイプのセットに関連付ける最もクリーンな方法は何ですか?
python - セグメンテーション違反を引き起こすPyArg_ParseTuple
私は自分の拡張機能からac関数を呼び出そうとしていますが、問題をこのテストケースに絞り込みました。
私が間違っているかもしれないアイデア。(Pythonバージョン2.6.4)。
python - Python で C 拡張機能を使用して GIL を回避する方法
複数のコアにわたって Python で CPU を集中的に使用するプログラムを実行したいと考えており、これを行うための C 拡張機能を作成する方法を見つけようとしています。これに関するコード サンプルやチュートリアルはありますか?