私は現在Pythonコードをデプロイする方法に満足しておらず、もっと良い方法があるかどうか疑問に思っていました。最初に私がしていることを説明し、次に欠点を説明します。
- 開発するときは、virtualenvを使用して依存関係を分離し、pipを使用してすべてのライブラリをインストールします。Python自体は私のOS(Ubuntu)から来ています
- 次に、ソースツリーと依存関係のpipバンドルで構成される「.deb」debianパッケージにコードをビルドします。
- 次に、デプロイするときに、virtualenv環境を再構築し、foo / bin / activateをソースしてから、プログラムを実行します(Ubuntuのアップスタートの下で)
ここに問題があります:
- pipバンドルはかなり大きく、debianパッケージのサイズを大幅に増やします。これは大したことではありませんが、面倒です。
- デプロイするたびに、すべてのCライブラリ(PyMongo、BCryptなど)をビルドする必要があります。これには少し時間がかかり(数分)、本番環境でこのCPUバウンドジョブを実行するのは少し手間がかかります
これが私の制約です:
- Python3で動作する必要があります。できれば3.2
- 依存関係を分離する必要があります
- Cを使用するライブラリ(PyMongoなど)で動作する必要があります
凍結について聞いたことがありますが、これを機能させることができませんでした。Pypiからのcx_freezeはコンパイルされていないようです(少なくとも私のPythonでは)。他のフリーズユーティリティはPython3では機能しないようです。どうすればこれを改善できますか?