問題タブ [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 投票する
3 に答える
486 参照

python - Python の __radd__ は C 定義の型では機能しません

noddy.Noddyメソッドで型を定義する python (2.7.5) 拡張機能を作成する__radd__と、(それ以外は同等の) カスタムの python defined-class オブジェクトとは異なる動作になります__radd__(前者は機能しませんが、後者は機能します)。例:

対応する出力:

メソッドd.__radd__は呼び出されませんが、呼び出されw.__radd__ます。なぜそうなのかについてのアイデアはありますか?[1] + xwhere xis a instanceの動作はドキュメンテーションPythonClassと一致しているようで、同様に機能することを期待しています。また、どちらも とは関係のない型です。noddy.Noddylist

回避策は大歓迎です。私はすでにこの問題を私の親しい友人である著者の注意を喚起しましたが、 で パッチを適用しようとしましたが、成功しませんでしlist.__radd__

編集

...そして、これが C ランドの写真です。

0 投票する
3 に答える
1597 参照

c++ - エラー: distutils 拡張モジュールの不明なファイル タイプ '.hpp'

SWIG を使用していくつかの C++ コードの Python バインディングを生成しようとしています。

いくつかblah_wrap.cxxblah.pyファイルを作成しました。

次にこれを作成しましたsetup.py

しかし、私は得る

.hppはかなり標準的な C++ 拡張機能ですよね? なぜ.cppですか?わかりませんが、元のコードの作成者は実装をヘッダー ファイルに入れました。

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

python - クラスが PEP 3118 を実装する場合の Python 2.7 での PyBufferProcs の定義

2.7にバックポートされた PEP 3118をサポートするために、ライブラリ (Python 2.7 をサポートする) のクラスを拡張している最中です。

ドキュメントから、tp_as_bufferを指すようにフィールドを初期化する必要がありますPyBufferProcs。ただし、2.7 のドキュメントによると、この構造体の説明には古いバッファ プロトコルのエントリしか含まれていません。ソースから、新しいプロトコル (および)の追加エントリがいくつかあることを収集し ます。 PyBufferProcsbf_getbufferbf_releasebuffer

疑問は残ります:

  • これらの新しいエントリが有効であることを Python に伝えるために何か特別なことをする必要がありますか?

  • 古いプロトコルのエントリを入力する必要がありますか? (たとえば、2.7 のドキュメントには、bf_getsegcount null ではない可能性があると記載されています。ただし、PEP 3118 をサポートしている場合は、このエントリを使用しないでください。)

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

c++ - Windows Python C 拡張機能は、自分の Python ビルド (VC++ 2008 Express を使用した 32 ビット ビルド) でのみ機能します。

使用しているライブラリ用の単純な Python ラッパーを構築しようとしています。しかし奇妙なことに、この拡張機能は公式の Python ビルドでは機能せず、私自身の Python ビルドでのみ機能します。それらは同じバージョンのソース コードに基づいていましたが。私も C/C++ 初心者なので、自分のプログラムが正しいかどうかわかりません。

したがって、ラップしようとしているメソッドの 1 つは次のようなものです (SDK ドキュメントからコピー):

構文

void IoWrite(IOHANDLE hIo, void * sourceBuffer, long size);

パラメーター

hIo IO シグナルへのハンドル、つまり IoConnect 操作からの戻り値。

sourceBuffer IO 信号が持つべき値を含むパラメーター。

size 書き込む信号のサイズ。

戻り値

戻り値は使用されません。

コード例

Python 拡張機能は次のとおりです。

これが私のsetup.pyです:

公式の Python ビルド 2.7.5 を使用すると、この SDK を使用する他のいくつかのアプリケーションがクラッシュしますが、VS 2008 Express でビルドされた独自の Python 2.7.5 で使用する場合は問題ありません。

どうもありがとう!

コンパイラに関する追加情報: MS Visual C++ 2008 Express Edition SP1 を使用していました。

私のコンパイラ設定

「C:\Python27\python.exe setup.py build」を使用してコンパイル 私のコンパイラ出力

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

python - Windows で msgpack Python 拡張機能をコンパイルできない

Visual Studio 2008 Professional バージョンを使用して Windows でmsgpackをコンパイルしようとすると、

私は得る

どうやらこれは、MS コンパイラが適切な C サポートを持っていないことが原因であるため、この問題を修正するはずの最新のmsinttypesをダウンロードしました。inttypes.h と stdint.h を配置してC:\Program Files\Microsoft SDKs\Windows\v6.0A\Include再度コンパイルしようとすると、次のようになります。

Google 検索に基づいて、これは int8_t を定義している他のヘッダー ファイルのように見えます。実際、私が間違っていなければ、最初に問題を修正するために msinttypes から追加したヘッダー ファイルである stdint.h であるというエラーが表示されます。このマシンには vs.net 2010 プロフェッショナルもインストールされていますが、それが問題を引き起こす可能性があるかどうかはわかりません。

このマシンの Windows で完全な Python セットアップを実行していることを考えると、Windows で mingw に切り替えることはできません。これは、すべての Python 2.7 コードが Visual C++ 2008 でコンパイルされているため、問題が発生する可能性があるためです。

Windows で高速バージョンを使用できるように msgpack 拡張機能をコンパイルするにはどうすればよいですか?

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

c++ - 「=」演算子を使用してブースト python リストまたはその参照をコピーする方法

このコードを取る

問題は演算子「=」にあります

object_core.hpp ファイルのデバッガーでは、これはブースト python コア ファイルです。

演算子 "=" を使用する適切な方法は何ですか?

編集済み

問題はスタックです。ポインター other_class->py_list が null (または、クラス コンストラクターが呼び出されていないため None) の場合、プログラムは関数Py_DECREFを呼び出すことができません (NULL ポインターの前に参照が存在しない)。

問題は、コンストラクターの呼び出しを修正することです

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

python - すでに .exe にコンパイルされている Python プログラムを拡張しますか?

python 2.5 (windows) を使用してネットワーク分析ツールを作成しています。これは、scapy を使用してネットワーク トラフィックをキャプチャし、キャプチャ データを *.pcap ファイルに保存します。私が達成しようとしているのは、ユーザーがネットワーク トラフィックを分析できる独自の関数を作成できるようにすることです。だから私がしたことは、ユーザーが関数を書くことを可能にするインターフェースクラスを作成したことです。

今私が直面している問題は、プログラム全体を exe としてパッケージ化した後、上記の構造を持つアナライザー関数をロードし、モジュールをインポートする必要がある場合、「 import nmap 」と言って、そのモジュールがどのように機能するかということです。システムにインストールされていますか?

だから私の質問は、どうすればこのタスクを達成できるかということです。より良い方法はありますか?

前もって感謝します 。

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

python - Py_BuildValue: bool でタプルを作る?

docsで、int (「i」を指定) でタプル値を構築できることがわかります。bool でタプルを作成する必要があり(True, 10)ます。このようなタプルを bool (どの指定子が必要か) で作成するにはどうすればよいですか?