17

私は過去 3 時間を費やして、インタラクティブ モードを使用せずに Python を無効化またはビルドできるかどうか、または Linux 用に Python 実行可能ファイルのサイズを小さくする方法を見つけようとしました。

ご想像のとおり、これは組み込みデバイス用であり、クロス コンパイル後の Python は約 1MB の大きさであり、私には大きすぎます。

今質問:

Python 実行可能ファイルを縮小する可能性はありますか? 対話モードを無効にする (コマンド ラインで Python プログラムを起動する) ためかもしれません。

構成オプションを探していくつか試してみましたが、実行可能ファイルに変更はありません。

gcc の最適化されたオプションを使用してコンパイルしましたが、既に削除されています。

4

3 に答える 3

6

本当にPythonを縮小したい場合は、それらのプロジェクトを見ることができます:

http://code.google.com/p/python-on-a-chip/

サイトで言ったように:

Python-on-a-Chip(p14p)は、OSのないマイクロコントローラーでPython言語の重要なサブセットを実行する縮小Python仮想マシン(コード名PyMite)を開発するプロジェクトです。p14pの他の部分は、デバイスドライバー、高レベルのライブラリ、およびその他のツールです。このプロジェクトについて話し合うには、python-on-a-chipgoogleグループに参加してください。

これは予想より少し低いレベルかもしれませんが、実際には縮小されています:

PyMite VMの機能:

  • 約55KBのプログラムメモリが必要です
  • 4KBのRAMで初期化します。印刷「helloworld」には5KBが必要です。8KBが最小推奨RAMです。
  • 整数、浮動小数点数、タプル、リスト、辞書、関数、モジュール、クラス、ジェネレーター、デコレーター、クロージャーをサポートします
  • Python2.6の29個のキーワードのうち25個と112個のバイトコードのうち89個をサポートします

このプロジェクトから面白いアイデアを得ることができます。

仮想マシンのみを取得することに注意してください。pyではなくpycファイルを実行できます。(ただし、pycファイルはクロスプラットフォームです。pyファイルよりもはるかに小さいです)

実際、本当に最小のPythonをターゲットにしている場合は、ライブラリの一部を無効にする必要がありますが、コンパイラ自体も無効にする必要があります。

このサイトにも興味深いポインタがあるかもしれません:http ://www.awaretek.com/pymo.html

于 2012-09-28T23:03:55.937 に答える
3

構成するだけでもう少し詰め込む方法があるかもしれませんが、それ以上のことはできません.

また、実際のインタラクティブ モードのコードは非常に些細なものなので、大幅に節約できるとは思えません。

サイズを小さくするためにインタープリターをハッキングできる、使用していない重要な機能が他にもあると確信しています。たとえば、おそらくパーサーとコンパイラの大きな部分を捨てて、バイトコードだけを処理することができます。問題は、それを行う唯一の方法がインタープリターのソースをハックすることだということです。(そして、それは世界で最も美しいコードではないので、自分のやり方を学ぶためにかなりの時間を費やす必要があります。) そして、実際にハッキングできる機能を知る必要があります。

他の唯一の現実的な代替手段は、Python ライクな言語用の小さなインタープリターを作成することです。たとえば、tinypy プロジェクトを取り上げます。しかし、あなたのコメントからすると、非常に近い場合を除き、「Python のような」だけでは十分ではないように思えます。

CPython よりも優れた別の Python 実装をハックします。問題は、Jython と IronPython がネイティブ コードではないことです (ただし、JVM->ネイティブ コンパイラを使用したり、J2ME JVM に十分な量の Jython を詰め込んだりすることはできますが)、PyPy は実際には組み込みのプライム タイムの準備ができていません。システム。(数年待ってもらえますか?) つまり、おそらく CPython に行き詰まっているでしょう。

于 2012-09-28T01:03:17.723 に答える