問題タブ [python-extensions]

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 投票する
1 に答える
465 参照

python - xmlrpcを介してPythonリモートプロシージャコールを実行しようとするとCコードがクラッシュする

Python xmlrpcクライアントを作成し、xmlrpcサーバーでメソッドを呼び出すCコードを作成しようとしています(これをフックDLLのIPCとして使用することを考えています)。

これがコードです...それが機能するまで、参照カウントを階層化するつもりはありません。

別のPythonサーバープロキシから呼び出されたときに、Pythonxmlrpcサーバーが正常に機能することを確認しました。上記の実行可能ファイルを実行しようとすると、でクラッシュしますPyObject_CallMethod()。なんで?

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

python - Upskirt の Python 拡張機能: 文字列の末尾のゴミ

Upskirtの Python 拡張機能を作成しようとしています。サンプル (Upskirt コードのサンプル プログラムと Ruby 拡張機能) があるので、最初の C プロジェクトにはそれほど難しくありません。

拡張機能は機能し、私がスローした Markdown を変換しますが、出力の文字列の末尾にゴミが含まれることがあります。そして何が原因なのかわからない。

出力は次のとおりです。

私のコードは私の Github repoにあります。アップスカートと聞いて思いついたのでパンティショットと呼んだ。奇妙な名前、私は知っています。

誰かが私を助けてくれることを願っています。

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

python - Python拡張オブジェクトでワイド文字のメンバーを使用することは可能ですか?

宣言のdefineをchar *使用して、基本型が、のPythonC拡張機能でオブジェクトのメンバーを作成するのは簡単です。T_STRINGPyMemberDef

に相当するものがないように見えるのはなぜwchar_t *ですか?そして、実際に1つあるとしたら、それは何ですか?

例えば

struct object含むchar *text

PyMemberDefアレイには{"text", T_STRING, offsetof(struct object, text), READONLY, "This is a normal character string."}

対のようなもの

struct object含むwchar_t *wtext

PyMemberDefアレイには{"wtext", T_WSTRING, offsetof(struct object, wtext), READONLY, "This is a wide character string"}

のようなものPyUnicode_AsString()とそれに関連するメソッドを使用して、UTF-8でデータをエンコードし、基本的なchar文字列に格納し、後でデコードできることを理解していますが、そのようにするには、ジェネリックgetattrsetattrメソッド/関数を次のようなものでラップする必要があります。エンコードされたテキストを考慮します。構造体内に固定要素サイズの文字配列が必要で、構造体に格納できる有効な文字数を変更したくない場合は、あまり役に立ちません。

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

python - 実行時に新しい型を Python に公開する

新しい型を調べて定義し、それらを pytypeobject に格納して、次の関数を呼び出しました (インタープリターを初期化した後):

PyType_Ready(); //これは定義済みの型を取ります

PyModule_AddObject(); //これにより、PyModule_Create() を使用して作成したモジュールに定義済みの型が追加されます。

定義した型を使用しようとすると、インタープリターはそれが存在しないと言うので、実行時に型を追加するために実行する必要がある別の手順があるか、または他に必要な一連の手順があると想定していますこれを達成するためにかかります。

どんな助けでも大歓迎です。

Python 構文エラー:

テスト スクリプトの内容:

Bound はモジュールを定義した名前で、Foo はテスト目的で定義しようとしている型です。

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

c++ - 関数ポインタはプロセス間で有効なままですか?

関数呼び出しのシーケンスを格納するためにC++関数ポインターを使用する拡張モジュールを作成しました。Pythonのモジュールを使用して、これらの呼び出しシーケンスを別々のプロセスで「実行」したいと思いmultiprocessingます(共有状態がないため、同期の問題はありません)。

関数ポインタ(データポインタではない)が有効になった後も有効であるかどうかを知る必要がありmultiprocessingますfork()

C ++モジュール:

コンパイル済み:

複数のプロセスにわたってそれを呼び出すPythonコード:

出力は期待どおりです。「運が良かった」のか、それとも関数ポインタが。の後で有効なままであると確実に期待できるのかを知りたいfork()

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

macos - Mac OS XのCmake、フルパスでライブラリをリンク

cmakeでPython拡張機能を構築しようとしています。これはcmakeリストです:

ライブラリは正しくコンパイルおよびリンクされていますが、otoolを使用して気に入ったライブラリを見ると、次のようになります。

CMakeにdrtile.soをvigranumpycore.soおよびlibboost_python.dylibへのフルパスにリンクさせるにはどうすればよいですか?ありがとう!

0 投票する
2 に答える
9110 参照

python - Python 2.7 用に libdnet をコンパイルします。

win32 python2.7でscapyを使用しようとしています

これを期待して、他のすべての依存関係をコンパイルすることができました

この実行可能ファイルに到達するという目標に役立つものはありますか? 「dnet-1.12.win32-py2.7.exe」

(この質問と scapy マニュアルも更新することを約束します。

Python 2.7 を使用して Windows で Scapy を実行する)

アップデート:

私はvs2005を使用しているmingw32でコンパイルすることができました.libdnetにいくつかの修正を加えて実際に動作させる必要があります(前回Windowsでコンパイルしたときはvs6.0でしたように見えます)

scapy マニュアルを更新してみます... (そしてそこに実行可能ファイルをアップロードします)

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

python - Cython1.1.2とconstの正当性

私はCythonを使って、CライブラリのPython拡張機能を作成しようとしています。setup.pyファイルを作成しましたが、pxdファイルとpyxファイルを作成しようとすると、エラーが発生します。

調査の結果、Cythonはconstパラメーターを使用して関数をgrokできないようです。const指定子を削除するたびに、const引数を持つ次の関数プロトタイプまでコンパイルが続行されます。

これはCythonの既知の制限ですか?それとももっと根本的なものが欠けていますか?

私はPython2.6.5でCython0.11.2を実行しています

0 投票する
9 に答える
21555 参照

python - CythonでコンパイルされたC拡張機能:ImportError:動的モジュールがinit関数を定義していません

「概念実証」として、Cythonを使用した拡張機能としてCライブラリの一部をコンパイルしました。私はなんとかコードをハックして(constは問題を修正するなど)、最終的に拡張機能を構築しました。

ただし、新しく作成した拡張機能をインポートしようとすると、次のエラーが発生しました。

私は何を間違っているのですか、そしてこれをどのように修正しますか?

Ubuntu10.0.4でCythn0.11.2とPython2.6.5を使用しています

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

python - Cython の依存関係を持つ別のファイルを作成する方法とコンパイル エラーを修正する方法: Python オブジェクトを 'mySet*' に変換できません

Cython を使用して、最初の Python 拡張機能を構築しようとしています。

私のCファイルは論理的に分割されており、機能は「ネスト」されています。そのモジュールCは、モジュールBで定義された関数に依存し、モジュールAに依存します。

機能モジュール間の依存関係を維持できるように、.pxd ファイルと .pyx ファイルを分割する方法を理解するのが難しいと感じています。

次のスニペットは、うまくいけば状況を明確にするのに役立つはずです:

注: ファイル FooBar.h には、一般的なデータ型を宣言し、これらの一般的な型 (myArray および mySet) の単純な API を提供するファイル CommonDefs.h が含まれています。

CommonDefs.h と CommonDefs.c で宣言/定義されたデータ型と関数をエクスポートする ccommontypes.pxd と commontypes.pyx ファイルを既に作成しています。そこからpython拡張モジュールを正常にコンパイルできました。

CommonDefs.h に依存するデータ型と関数をエクスポートする次の段階に進みたいと思います。ただし、タイプ myArray および mySet を再宣言する必要があることがわかりました (これらは ccommontypes.pxd で既に宣言されていましたが)。

関数はタイプ myArray および mySet の引数を取るため、これらの宣言をインポートまたはインクルードする方法がとにかく見つからないようです。そのため、以下のファイルでそれらを再宣言する必要があります。

質問 1 以下で行ったように型を再度宣言しても問題ありませんか、それとも注意が必要な問題はありますか?

質問 2 上記の FooBar ctor コードから、メモリ割り当て関数は mySet 変数へのポインタを期待しています。ただし、このコードをコンパイルしようとすると、次のエラーが発生します。

Python オブジェクトを 'mySet *' に変換できません

エラーメッセージは理解できましたが、Python は静的型付けされていないため、データ型を指定する方法がわかりません。

これを解決するための助けをいただければ幸いです。