18

C++で書かれた趣味のプロジェクトでPython を組み込みスクリプト言語として使用することを考えています。個別にインストールされた Python ディストリビューションに依存したくありません。Python のドキュメントは、一般的な使用法について非常に明確であるように見えますが、これに対する明確な答えを見つけることができませんでした。

アプリケーションに Python インタープリター + 標準ライブラリをデプロイすることは可能ですか? この用途には、Lua、Javascript (Spidermonkey)、Ruby などの他の言語の方が適していますか?

さまざまな言語を比較検討している基準は次のとおりです。

  • 外部にインストールされたパッケージへの依存関係がない/ほとんどない
  • 優れた機能セットを備えた標準ライブラリ
  • 素敵な言語:)
  • 巨大なインストール パッケージにはなりません

編集:

質問は次のとおりだと思います:プラットフォームに既にpythonがインストールされているかどうかに関係なく、自分のpythonライブラリと標準ライブラリを自分のプログラムのインストーラーで展開するにはどうすればよいですか?

編集2:

もう1つの明確化。C と Python のコードをリンクする詳細についての情報は必要ありません。

4

4 に答える 4

18

アプリケーションをPythonライブラリ(WindowsではpythonXX.lib)にリンクし、以下をmain()関数に追加します。

Py_NoSiteFlag = 1;  // Disable importing site.py
Py_Initialize();    // Create a python interpreter

必要なpython標準ライブラリビットをzipファイル(pythonXX.zipと呼ばれる)に入れ、これとpythonXX.dllを配布する実行可能ファイルの横に置きます。zipfileモジュールのPyZipFileを見てください。

于 2009-02-15T20:28:31.767 に答える
8

埋め込みプロセスは完全に文書化されています: Embedding Python in Another Application。ドキュメントは、埋め込みが行われるいくつかのレベルを提案しています。要件に最も適したものを選択してください。

Python を埋め込む簡単なデモは、ソース配布の Demo/embed/ ディレクトリにあります。

デモはここにあり、ディストリビューションからビルドできるはずです。

  • 非常に高レベルの埋め込み
  • 非常に高いレベルの埋め込みを超えて: 概要
  • 純粋な埋め込み
  • 組み込み Python の拡張
  • Python を C++ に埋め込む

標準ライブラリから、依存関係があまりないコンポーネントを選択できます。

于 2009-02-15T17:28:19.920 に答える
5

答えをgimelで拡張するために、python.dllを出荷し、それを使用し、Python標準ライブラリの独自のインストールを使用するために正しいPYTHONPATHを設定することを妨げるものは何もありません。それらは単なるライブラリとファイルであり、インストールプロセスはそれらをそのまま処理できます。

于 2009-02-15T18:16:30.787 に答える
0

Python アプリを簡単にデプロイする方法を探している場合は、Py2Exeを使用できます。これにより、ユーザーのマシンに何がインストールされているか、またはまだインストールされていないかを気にすることなく、必要なすべての依存関係をアプリに許可できます。

[編集] Py2Exe が組み込みアプリケーションに適していない場合、関連ファイルをチェックし、不足しているものをダウンロード/インストールするようにインストーラーを取得できますか?[/編集]

[Edit2]エルマーはあなたが探しているものでしょうか? [/Edit2]

于 2009-02-15T17:42:00.887 に答える