問題タブ [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.
macos - Mavericks: Python インタープリターを静的ライブラリにコンパイルする
Python 3.3インタープリターをMac OS 10.9 Cocoa アプリに埋め込んで、いくつかの Python 機能を追加したいと考えています。別の StackOverflow Q&A から読んだことから、動的ライブラリよりも静的ライブラリ (フッターの参照) を作成するのが最善でしょう。
Python インタープリターから静的ライブラリ (.a ファイル) を作成しようとしたのは次のとおりです。
- ここから Python 3.3 (CPython) ソース コードをダウンロードしました。
- ファイル
*static*
内に追加しましたModules/Setup.dist
- ターミナルでソースをコンパイルするために、次のように入力しました。
./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などのスタティック ライブラリですか?
- リファレンス 1: Cocoa アプリで Python を動作させる
- 参考2: Pythonインタプリタを静的にコンパイル?
python - Python float から C++ double への変換中に精度が失われる
C++ プログラムに Python コードを埋め込んでいます。PyFloat_AsDouble を使用すると、精度が失われます。保持できる精度は 6 桁までです。私のプログラムは精度に非常に敏感です。これに対する既知の修正はありますか? 関連する C++ コードは次のとおりです。
retVals[i] の精度はわずか 6 ですが、Python コードによって返される値は浮動小数点数であり、より高い精度を持つことができます。完全な精度を得るには?
python - 移入された c 構造体を python に渡すにはどうすればよいですか (ctypes なし)
ctypes を使用せずに ac 構造を python に渡すにはどうすればよいですか?
stats_res_t
Python に返そうとしている構造体へのポインタがあります。
私はの線に沿って何かを試しています
しかし、それはpythonでsegfaultを引き起こします。
を使用して、移入された構造を python に渡すことは可能PyObject
ですか?
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 からオブジェクトを取得しようとするたびに、コードが失敗します。
私は何を間違っていますか?
python - Python C APIは、モジュール内のクラスを反復処理します
この場合、モジュールはファイルからロードされた Python スクリプトです。これについては、インターネット上で何も見つかりません。
モジュール内のすべてのオブジェクトをループできれば、PyClass_Check を使用してクラスをフィルター処理できます。しかし、これを行う方法もわかりません。
これは、ユーザーが基本クラスから派生したクラスを使用してゲーム コンテンツを定義するためです。
モジュールで PyObject_GetIter() を使用しようとしましたが、NULL を返します (明らかに、そのように反復することはできません)。
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を最後のページに追加する必要がありますが、それでも私が求めているものではないようです
python - C++ への Python の埋め込みが期待どおりに機能しない
Python を C++ アプリケーションに埋め込んでいます。
タイムスタンプを返す次の C++ コードを実行すると、正常に動作します。
今私は取得したいsys.path
。しかし、同様のコードでエラーがスローされます:
問題は、変数であるのtime.time()
に対し、関数呼び出しであると思います。sys.path
その場合:
- 変数の結果を取得する方法は?
- 結果 (この場合は a
list
) を文字列の配列など、C++ で意味のあるものに適切に変換するにはどうすればよいですか?
そうでない場合、どのように進めますか?私はPython 2.7.6を使用しています
ありがとう。