問題タブ [python-cffi]
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.
python-3.x - Python、PyPy、CFFI: 何を使用すればよいですか?
Python で C ライブラリを呼び出す必要がありますが、検討した結果、CFFI がこの種の作業に最も適しているように思われました。ただし、今では、正しく使用しているかどうか完全に混乱しています。PyPy でのみ意図したとおりに動作するように見えるものもあれば、Python3 (私が知る限り、PyPy はサポートしていません) でのみ動作するように見えるものもあります。 )。
CFFI ドキュメントの最も基本的なコード サンプルを次に示します。
このコードを Python3 で実行すると、次のエラーが発生します: TypeError: initializer for ctype 'char[]' must be a bytes or list or tuple, not str
エラーを探したところ、PyPy で昨年 1 月に修正された問題として見つかりました。それで、それが PyPy で動作するかどうかを確認します。万歳!
ただし、すでに 2 番目の例では、問題が逆になっています。
これを PyPy で実行すると、別のエラーがスローされます。
この例では、古いバージョンでは動作しないことが有益に示されているため、CFFI バージョンを確認しました: 1.2.1、すべて問題ありません。
最後に、PyPy の代わりに Python3 を使用して 2 番目の例を実行しました。
Python を初めて使用するので、何を使用すればよいのか、同じドキュメントの例が異なるバージョンの言語でしか実行されない理由がわかりません。もちろん、何か間違った設定をしただけかもしれないという問題 (Linux も初めての場合) や、別のバージョンの python を使用する必要があるという問題はまだあります。誰かがこれに光を当てることができますか?
python - Python にロードされた DLL をアンロードする
Windows では、他の DLL をロードする自分で作成した DLL があります。問題は、Matlab で DLL を使用する場合、loadlibrary
すべて問題ないことです。calllib
unloadlibrary
Python では、 と を使用しようとしましたがctypes
、cffi
どちらも同じ結果になりました。DLL を読み込んで関数を呼び出すことはできますが、再び終了することはできません。Python がハングアップし、タスク マネージャーからタスクを終了する必要があります。
ctypes
私は電話しようとしました
ここで提案されているように、Pythonで開いているctypesライブラリを効果なしで解放します。さらに、明示的な関数を呼び出して、他の DLL をアンロードしようとしました。
アンロード/ハングしない理由について、ヒントや解決策を誰かに教えてもらえますか?
python - 構造体を定義するときのpython cffi解析エラー
python-cffi
Cコードをラップするために使用しようとしています。以下は、呼び出しexample_build.py
をラップする試みを示しています。lstat()
コンパイルpython example_build.py
すると、 の解析エラーが発生しmode_t st_mode
ます。
マニュアルから与えられた同様の例では、問題はありません。私は何が欠けていますか?ティア。
python-c-extension - Python cffiを使用してカプセルからvoidptrを取得するには?
cffi を使用してカプセルの内容を抽出し、 C コードに送信できる voidptr に変換する方法はありますか?
背景情報 - numpy 配列は、非常に便利な構造体、つまりPyArrayInterfaceを含むカプセルを提供できます。PyPy 用のカプセルはまだ存在しないと思うので、答えはおそらくノーですが、将来はすべての python バージョンのカプセルが含まれると信じているので、答えがイエスであることを願っています :)。
python - 生成された Windows exe (pyinstaller) は _cffi_backend を読み込めませんでした
Windows7(x64)でpyinstaller(3.0)を使用して実行可能ファイル(x86)を生成しようとしています。cffi とその他の必要なパッケージを pip でインストールしました。コマンド ラインから cffi および _cffi_backend モジュールを正常にインポートできます。
>
生成された実行可能ファイルを実行しようとすると、以下のエラーが発生しました。
ここに完全な起動ログが表示される場合があります。
ちなみに、libcffi ライブラリを mingw でコンパイルして DLL ファイルを取得しました。次に、ライブラリ パスの 1 つにコピーすると、アプリケーションの起動時に再び同じエラーが発生しました。
_cffi_backend ライブラリが存在し、Python パスにあるにもかかわらず、アプリケーションの起動時にロードできなかった理由がわかりません。私はPythonが苦手で、残念ながらこのほぼ2日間で立ち往生しています。提案やガイダンスをいただければ幸いです。
ありがとう。
python - Python cffi ライブラリ オブジェクトのイントロスペクションにより、__dict__ オブジェクトが変更される
cffi を使用して、ヘッダー ファイルから列挙型の完全なリストを取得したいと考えています。しかし、奇妙な動作が見られます。オブジェクトを観察することで、基になる の変更を強制しています__dict__
:
__dict__
クラスで最初に呼び出されるまでは入力されないと思いますgetattr()
が、実際の問題は次のとおりです。呼び出しも同じようです。dir()
__dict__
hasattr()
python - _cffi_backend という名前のモジュールがありません
私の Linux rhel-5 には Python 2.6 があります。pip と必要な CFFI パッケージをインストールしました。サンプル CFFI プログラムを実行しようとすると、次のようになります。
それは言います:
考えられるエラーは何ですか?インストール中に何か見逃しましたか?pip、wheel、pycparser、pytest、cffi をインストールしました。