問題タブ [python-embedding]

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

macos - Mavericks: Python インタープリターを静的ライブラリにコンパイルする

Python 3.3インタープリターをMac OS 10.9 Cocoa アプリに埋め込んで、いくつかの Python 機能を追加したいと考えています。別の StackOverflow Q&A から読んだことから、動的ライブラリよりも静的ライブラリ (フッターの参照) を作成するのが最善でしょう。

Python インタープリターから静的ライブラリ (.a ファイル) を作成しようとしたのは次のとおりです。

  1. ここから Python 3.3 (CPython) ソース コードをダウンロードしました。
  2. ファイル*static*内に追加しましたModules/Setup.dist
  3. ターミナルでソースをコンパイルするために、次のように入力しました。
    • ./configure LDFLAGS="-static -static-libgcc" CPPFLAGS="-static"

私が得る結果は次のとおりです。

私の理解では、gcc は実際には Mavericks の Apple LLVM バージョン 5.0 (clang-500.2.79) (LLVM 3.3svn に基づく) に置き換えられています。

また、config.logに以下を見つけました...

質問: Apple LLVMを使用して Python 3.3 をコンパイルし、 libpython3.3.aなどのスタティック ライブラリですか?


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

python - Python float から C++ double への変換中に精度が失われる

C++ プログラムに Python コードを埋め込んでいます。PyFloat_AsDouble を使用すると、精度が失われます。保持できる精度は 6 桁までです。私のプログラムは精度に非常に敏感です。これに対する既知の修正はありますか? 関連する C++ コードは次のとおりです。

retVals[i] の精度はわずか 6 ですが、Python コードによって返される値は浮動小数点数であり、より高い精度を持つことができます。完全な精度を得るには?

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

python - 移入された c 構造体を python に渡すにはどうすればよいですか (ctypes なし)

ctypes を使用せずに ac 構造を python に渡すにはどうすればよいですか?

stats_res_tPython に返そうとしている構造体へのポインタがあります。

私はの線に沿って何かを試しています

しかし、それはpythonでsegfaultを引き起こします。

を使用して、移入された構造を python に渡すことは可能PyObjectですか?

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

c# - Pythonnet: 組み込みの python インタプリタを使用するには?

pythonnet ( https://github.com/renshawbay/pythonnetにある python3 互換バージョン)を使用して、C# から組み込みの python インタープリターを使用しようとしています。

私のインタープリターは D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime にあり、python ディストリビューションの「Lib」および「Libs」フォルダーがあります。

次のコードを使用してテストしました。

しかし、うまくいきません。「SystemError: PyEvalCodeEx: NULL globals」が表示されます。Python からオブジェクトを取得しようとするたびに、コードが失敗します。

私は何を間違っていますか?

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

python - Python C APIは、モジュール内のクラスを反復処理します

この場合、モジュールはファイルからロードされた Python スクリプトです。これについては、インターネット上で何も見つかりません。

モジュール内のすべてのオブジェクトをループできれば、PyClass_Check を使用してクラスをフィルター処理できます。しかし、これを行う方法もわかりません。

これは、ユーザーが基本クラスから派生したクラスを使用してゲーム コンテンツを定義するためです。

モジュールで PyObject_GetIter() を使用しようとしましたが、NULL を返します (明らかに、そのように反復することはできません)。

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

python - Python をマルチプラットフォーム C++ フレームワーク (JUCE) に埋め込む方法は?

私は JUCE を使用して音楽トレーニング ゲームを設計しています。JUCE はマルチプラットフォームの C++ フレームワークであり、オーディオ/ビジュアルをワイヤーの近くでコーディングできます。

しかし、私は自分のゲームプレイ (制御フロー/データ処理) を Python でコーディングしました。これは複雑であり、さまざまなゲームプレイを試すことができるように変更し続けたいと考えています。Python は、この種のラピッド プロトタイピング作業に最適です。

したがって、(プラットフォームに依存しないため、Win/OSX/Lin/iOS/And) C++ で Python ランタイムを起動し、.py ファイルをフィードして、その .py でさまざまな関数を呼び出します。また、.py から C++ コードにコールバックできるようにしたいと考えています。

関連する公式の Python ドキュメントは次のとおりです: https://docs.python.org/2/extending/extending.html

CodeProject の記事は次のとおりです: http://www.codeproject.com/Articles/11805/Embedding-Python-in-CC-Part-I

ただし、どちらもマルチプラットフォームの問題に対処していないようです.

ライブラリ libpython.a とリンクし、ランタイム環境の起動、スクリプトのロード、python-code の実行などのさまざまな機能を含む #include をリンクするのがテクニックのようです。

しかし、確かにこの libpython.a はプラットフォームごとに個別にコンパイルする必要がありますか? もしそうなら、これはあまりきれいな解決策ではないので、代わりに Python ソース コードをプロジェクトに追加して、.a をコンパイルすることができますか?

どうすればこれを行うことができますか?

編集: https://wiki.python.org/moin/boost.python/EmbeddingPython

EDIT2: ここで完全な CPython ソース コードを取り込もうとするのはやり過ぎだと確信しています。システム コール/マルチスレッド/ファンシーなものをサポートしない C/C++ で、必要最小限の Python 実装を誰かが作成したに違いありません。 - Python 構文を 1 行ずつ処理するだけです。https://wiki.python.org/moin/PythonImplementationsを調べてみましたが、明らかな候補が見つかりません。

EDIT3: https://github.com/micropython/micropythonを最後のページに追加する必要がありますが、それでも私が求めているものではないようです

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

python - C++ への Python の埋め込みが期待どおりに機能しない

Python を C++ アプリケーションに埋め込んでいます。

タイムスタンプを返す次の C++ コードを実行すると、正常に動作します。

今私は取得したいsys.path。しかし、同様のコードでエラーがスローされます:

問題は、変数であるのtime.time()に対し、関数呼び出しであると思います。sys.pathその場合:

  1. 変数の結果を取得する方法は?
  2. 結果 (この場合は a list) を文字列の配列など、C++ で意味のあるものに適切に変換するにはどうすればよいですか?

そうでない場合、どのように進めますか?私はPython 2.7.6を使用しています

ありがとう。