4

私はサーバー側でかなり大きなPythonアプリケーションを開発し、すべてのデータベース接続、ファイル抽出、解析、コマンドライン呼び出しを行います。

標準のPythonライブラリ以外の多くのサードパーティモジュールを使用したため、デプロイするのは悪夢になります。そして、私はそれらを見失いました。特にDifferntLinuxOSはそれらの異なるバージョンを使用しているため、OSのパッケージマネージャーを使用してそれらをインストールすることはもはや適切ではありません。

私が使用している現在のPythonバージョンを含むすべてのバンドルにそれらをデプロイしたいと思います(ほとんどのOSはまだPython 2.5,6に同梱されており、2.7および2.7固有の機能を使用しています)。

さらに、他のサーバーでテストできるように、クライアントに展開方法を教える必要があります。しかし、彼らはLinuxの専門家ではありません。1つのスクリプトで、またはコピーして貼り付けることで、簡単にする必要があります。

Windows用のPortablepythonがありますが、Linux用には何もありません。そして、私は通常、私がホストするだけのサーバーで作業しているので、Pythonパッケージングを使用したことはありませんでした。

インストールされているすべてのPythonモジュールとPython自体を含む、Pythonの利用可能なパッケージ化とデプロイのオプションについて教えてください。

4

4 に答える 4

5

ほとんどのPythonパッケージは、libデプロイ内にまたは同様のディレクトリを作成しsys.path、Python内またはPYTHONPATH外部に追加してから、パッケージディレクトリ(通常は解凍したディレクトリ)をそのディレクトリにコピーすることでデプロイできます。これにより、デプロイされたコードを含むパッケージを、たとえばMercurialリポジトリに保持できます。

Python自体のデプロイはもう少し面倒になりますが、Pythonのインストール場所(/usr/localまたはなど)を制御できる場合は、、、および/optの問題です。次に、スクリプトが実行可能としてマークされている限り、スクリプトをのような行で開始することにより、スクリプトをそのPythonにポイントできます。./configure --prefix=...makesudo make install#!/usr/local/bin/python

たとえば、を必要とするコードをデプロイする場合はdocutils、次のようにします。

cd projectDir
mkdir -p lib
tar xzvf ~/Downloads/docutils-0.8.tgz
mv docutils-0.8/docutils lib
rm -r docutils-0.8

次に、このディレクトリのPythonモジュールは、最初に次を追加するだけです。

#!/usr/local/bin/python

import os
import sys
sys.path(os.path.join(os.path.dirname(sys.argv[0]), "lib"))
import docutils
于 2011-07-15T09:57:07.377 に答える
1

これは幅広いトピックですが、ここにいくつかの指針があります。

Pythonプロジェクトとその依存関係については、virtualenvpipをご覧ください。

Virtualenvは、プロジェクトをインストールできるターゲットプラットフォーム上に分離されたPython環境を提供します。

Pipは、パッケージとその依存関係をダウンロードしてインストールするパッケージインストールツールです。pipフリーズを見て、開発環境に現在インストールしている依存関係のリストをすばやく定義する方法を提供してください。

Pythonでのパッケージ配布について詳しく知りたい場合は、配布プロジェクトについても読む必要があります。

Python自体のインストールを含む、システムのPython以外のコンポーネントの場合、Puppetのようなシステム自動化ツールを使用できますが、ニーズに対してはやり過ぎかもしれません。ワンステップインストールを探している場合は、ターゲットシステムのパッケージマネージャー用のパッケージの構築を検討している可能性があります。

于 2011-07-15T10:05:47.510 に答える
0

私が使用している現在のPythonバージョンを含むすべての1つのモジュールにそれらをデプロイしたいと思います(ほとんどのOSはまだPython 2.5,6に同梱されており、2.7および2.7固有の機能を使用しています)。

VirtualEnvがこれに必要なものである可能性がありますか?

于 2011-07-15T10:06:38.083 に答える
-4

超シンプルなサーバーサイドセットアップの理由はありません。

そのことに時間を無駄にしないでください。

サーバーのインストールはいくつ行われますか?多くはありません。

システム管理者は、サーバーベースのアプリケーションにある程度の複雑さがあることを期待しています。

サードパーティパッケージのリストがあります。彼らはそのリストに従い、インストールを行います。

次に、すべてのインストールが完了した後、パッケージをインストールして構成します。

これは、サーバーで作業する多くのシステム管理者が期待していることです。彼らは依存関係を期待し、マルチステップインストールを期待しています。

于 2011-07-15T10:00:16.607 に答える