web-dev-qa-db-ja.com

python sourceからバイナリdebパッケージをビルドする

pythonパッケージ(Ubuntu Quicklyを使用)を作成し、debパッケージを作成したい。残念ながらソースを使用してパッケージをすばやくビルドするpythonファイル(.py)とソースファイルを含めたくない。同じ問題は、パッケージをビルドするためのBazaarプラグインにもあります。

どうすればdebパッケージを作成できますか ソースなし インストール中に.pyファイルをコンパイルするので、システムにソースファイルはありませんか?

1
marcinpz

Pythonは解釈されたスクリプト言語です。中間の.pycファイルはyourシステム用にコンパイルされており、他の場所では意味がないため、配布するだけではありません。ソースを配布すると、その場でコンパイルされます。

.pycファイルだけを配布できないわけではありません。 PEP 3147 これを許可し、構造を設定しますが、コストがかかり、(さまざまなイントロスペクション方法を介して)ソースの再生成を停止するかどうかさえわかりません-しかし、これはすぐにはできませんのために設計されています。このようなパッケージの作成には役立ちません。

クローズドソースアプリケーションを配布しようとしている場合、py2exe(Windowsのみ)や bbfreeze (すべて)のようなものがありますが、それらのどれも完全または完全に不可逆的ではありません。ソースをさらに保護したい場合は、 難読化メソッド を参照してください。

6
Oli

Pythonソースコードを非表示にして、ユーザーがシステムに対して何をしているのかをユーザーが知ることができないようにする方法は実際にはありません。ただし、プログラムがオープンソースである必要があるという意味ではありません。ライセンスによって異なり、必要なライセンスを使用できます。ソースコードを読み取れるからといって、ユーザーがソースコードを編集したり、再配布したりできるわけではありません。それはあなた次第です。これはすべての高レベル言語に当てはまります。たとえば、Webアプリケーションでは、常にソースコードがユーザーに表示されます。これは、開発者の許可なしに他のプロジェクトで使用できるという意味ではありません。

Geanie言語をご覧になることをお勧めします。これは、Java/C#と同様の機能を備えていますが、構文がPythonに似ている新しい言語です。 GenieはCにコンパイルされます。つまり、プラットフォームに依存しませんが、非常に高速です。そしてもちろん、Cはネイティブコードにコンパイルされます。

残念ながら、QuicklyにはまだGenieのテンプレートがありません。

2