8

私はDjangoアプリを構築しています。これは、Ubuntu Linuxホストで快適に実行できます(テスト:))。ソース コードなしでアプリをパッケージ化し、別の運用マシンに配布したいと考えています。理想的には、python/django コードを実行する CherryPy サーバーを起動する ./runapp コマンドでアプリを実行できます。

これを行ういくつかの方法を発見しました:

  1. .pyc ファイルのみを配布し、すべての要件をターゲット マシンにビルドしてインストールします。
  2. 多くのツールのいずれかを使用して、Python アプリを配布可能なパッケージにパッケージ化します。

私は本当にnr.2オプションを狙っています.Djangoアプリを含めたいので、追加のものをインストールまたは構成する必要なく配布することができます. インターウェブを検索すると、答えよりも多くの質問が寄せられ、Django パッキングは誰もが知っている難解な芸術であるが、誰も話していないという非常に酸っぱい味を提供してくれました。:)

Freeze (失敗)、Cx_freeze (簡易インストール バージョンは失敗、リポジトリ バージョンは機能しますが、アプリの出力は失敗) を試し、dbuilder.py を赤くしました (これは機能するはずですが、実際には機能しません - 推測します)。私が正しく理解している場合、ほとんどの問題は Django がモジュールをインポートする方法 (例) から発生しますが、解決方法がわかりません。

スタンドアロンの Django アプリケーションのパッケージ化/配布に関して、誰かがオンラインでポインタや優れたリソースを提供できれば、私はとても幸せです。

4

2 に答える 2

7

setuptools (標準の Python ディストリビューションメカニズム distutilsを拡張するツール)に基づいてディストリビューションを作成することをお勧めします。

setuptools を使用すると、アプリケーションを含む Python の卵を作成できるはずです。卵のメタデータには、自動的にインストールされる依存関係のリストを含めることがeasy_installできます (Django + 使用するサードパーティのモジュール/パッケージを含めることができます)。

setuptools/distutils ディストリビューションには、にインストールされるスクリプトを含めることができる/usr/binため、スクリプトを含めることができますrunapp

virtualenvに慣れていない場合は、それも確認することをお勧めします。分離された Python 環境を作成する方法であり、ディストリビューションのテストに非常に役立ちます。

これは、virtualenv に関するいくつかの情報を含むブログ投稿と、その他の知っておくと便利なツールに関する議論です: Tools of the Modern Python Hacker: Virtualenv, Fabric and Pip

于 2009-12-07T10:07:08.823 に答える
0

--noreload オプションは、どのモジュールが変更されたかを Django が自動検出するのを停止します。それで治るかどうかはわかりませんが、治るかもしれません。

もう 1 つのオプション (これは理想的ではありません) は、コア機能の一部を dll としてパッケージ化することで覆い隠し、プレーン テキスト コードが呼び出すようにすることです。

于 2009-12-07T09:36:58.900 に答える