2016-08-09 12 views
2

私はこのPythonピラミッドベースのアプリケーションを持っています。開発ワークフローは基本的に、変更されたファイルを直接プロダクション領域にアップロードすることでした。Pythonピラミッドプロジェクトの開発インスタンスを作成しよう

公開に近づいていますが、明らかにそれはもう動作しません。

接続文字列とdevelopment.iniを編集して、開発インスタンスをセカンダリデータベースにポイントすることができました。

ここでは、私が物事を扱うことができるプロジェクトの別のコピーをどのように作成してから、変更を実際に生かせるかを理解するだけです。

最初は、私はプロジェクトディレクトリのコピーをどこか別の場所に作成し、新しい場所を指す別の引数を付けて実行できると思っていました。それはうまくいかなかった。

次に、私は基本的に全く新しいプロジェクトmyproject-devを設定しました。

私はpcreateを使い、setup.pyを開発してから私のプロジェクトから私のdevelopment.iniをコピーし、myprojectではなくmyproject-devへのさまざまな参照を慎重に編集しました。 はその後、 initialize_myproject-dev_db /var/www/projects/myproject/development.ini

最後に、私はすべてが正常に動作していることを素敵なピラミッドのウェルカムページを取得します。

私は、プロジェクトディレクトリのすべてを吹き飛ばしてメインプロジェクトファイルをコピーすることができたと思っていましたが、私は胃の穴の中にその気持ちを持っていました。静的なURLのように動作します。

明らかに、私は含まれている静的なURLのmyprojectを参照していて、どこに他の人がいるかを知っています。

私はこの考え方はうまくいかないと思うので、今私はあきらめました。

Pythonのピラミッドプロジェクトの開発インスタンスをどのように設定するのか、誰にでも分かりますか?

+0

の/ var/www /のプロジェクト/ MyProjectと/ development.ini'パスが私を心配 'こと - それは私がhttp://yoursite.com/projects/myproject/development.iniに行くならば、それは私を紹介することを意味していそのファイルの内容は、データベースのパスワードとすべての? – Sergey

+0

いいえ、私はちょうどPHPから来ていて、それは私にとって理にかなった場所でした。私はそれが本当にどこにでも行くことができることを今や認識します。私はPython仮想環境へのフルパスを使用してすべてを実行しています。すべてがWSGIによって提供されており、WSGIサーバーを稼働させないと何も得られません。 –

答えて

2

最初にするべきことは、そうでない場合、あなたのプロジェクトをバージョン管理することです。 gitを使うことをお勧めします。

開発時にアプリケーションに加えられた変更を管理する利点に加えて、開発者間でのコピーの共有や運用環境の展開が容易になります。実際には、開発インスタンスと同じように、プロダクションをプロジェクトのgit cloneにすることができます。

もう一つは、Pythonライブラリパスにプロジェクトをインストールする必要があることです。これは、importincludeのすべてが動作する方法です。

あなたのアプリ(およびその依存関係)をお使いのシステムや他のアプリの残りの部分から「単離」されているように私は、virtualenvまたはpewのいずれかで、このための仮想環境を作成することをお勧めしたいです。

おそらくsetup.pyスクリプトがプロジェクトにあります。そうでない場合、create one。次に、プロダクションにpip install .、または開発中のpip install -e .でプロジェクトをインストールします。

私はdevelopment.iniproduction.iniの両方を持っていた:ここ

+0

ヒント集をありがとう。 は、私が実際にソースコントロールと私のPythonライブラリのすべての仮想環境にインストールされているプロジェクトを持っています。 問題は、私はモデルをインポートしていたとき、私は例えば、様々な場所でのプロジェクト名を参照しなければならないということです。 myproject.models.meta輸入DBSession からmyproject.models.usersからはmyproject.modelsからユーザー をインポート.usersは、従業員 をインポートしても、静的な参考文献に: $ {request.static_url(myprojectに:静的/管理/ CSS /のmain.css')} 私はちょうど展開中を通過し、検索と置換を開始することはできません私のコード。 –

+0

@ JeremyT:個別の仮想環境が2つ必要なので、それぞれが個別の 'myproject'モジュールを持つことができます(アプリが使用している別のライブラリのバージョンも可能です)。さらに/ virtualenvの代わりに、 'zc.buildout'を見ることができます。また、gitを使ってデプロイする代わりの 'fabric'を見てください。 – Sergey

+0

@Sergeyはそれを恐れていましたが、意味があります。それはちょうど、仮想環境が –

1

は私が私の最後のピラミッドのアプリを管理する方法を説明します。私は実際にローカル開発のために他の2つに加えて、development.local.iniを持っていました。私たちの "テスト"システムのためのものと、プロダクションのためのものです。私はバージョン管理のためにgitを使用し、本番用の配備のためのメインブランチを持っていました。私のprodサーバーでは、私は仮想環境などを作成し、私のメインブランチを引き出し、production.ini設定ファイルを使用して実行します。アップデートでは、基本的にvirtualenvにジャンプし、最新のアップデートをリポジトリから取得し、ピラミッドサーバを再起動する必要がありました。

関連する問題