2010-11-23 21 views
0

で、python/djangoモジュールのインポートが失敗するdebian vps with gigatux。 mod_wsgiとdjango/pythonを使用しています。私はvirtualenvsを使用しています。異なるレベルにあるかもしれないいくつかの異なるサイトをホストしたいと思っています。debian vps

それは、私は以下の文を持っている

のsite-packagesフォルダの中にあるのDjangoパッケージをインポートすることを拒否としてイムサイトランニングを得る問題を抱えて、今私もsyncdbの実行を行うことはできませんapache2 /サイト利用可能でWSGIの設定ラインから呼び出された私のdjango.wsgiファイル/デフォルト

import sys 
sys.path.append('/home/shofty/virtualenvs/sitename/lib/python2.5/site-packages') 

と、私はそのフォルダ内のかなりの数のパッケージを持っています。

ただし、syncdbは実行されません。

私はvirtualenvに強制せずにvpsにdjangoをインストールすると、syncdbを実行できます。しかし、syncdbは、サイトパッケージ内にあり、vpsにインストールされていないインストールされたアプリケーション内のモジュールのインポートに失敗します。だから私は、上記の声明がうまく動作しないことを知っている。

私はこの質問をするより専門的な場所があるかもしれないことを認識しています、私はそれを知っていません。これが答えられるどこかを知っているなら、それが何であるか教えてください。私は2日間このvpsを稼働させ、正直に言うと、私はあきらめる準備ができています。

+0

あなたはvirtualenvの上の 'source'をしました:あなたは、以下のコマンドであることですか? –

+0

いいえ、どちらかというとノブの間違いです! – bytejunkie

+0

これで、postgresql_psycopg2はインポートされないので、修正されていない可能性があります。どのようにサイトパッケージからモジュールをインポートしないのかを理解する方法がわからない... – bytejunkie

答えて

0

私はdebian、apache、django、mod_wsgi、およびvirtualenvsを数週間前にうまく再生するように作業しました。私がwsgiファイル用に作成したテンプレートを見ると、 'site.addsitedir'と 'sys.path.append'の両方を使用しています。 'site.addsitedir'はsite_packageを指し、 'sys.path.append'はコピーを指していますホスト上のアプリケーションのここではJinja2のテンプレートの最初の部分は

import sys 
import os 
import site 

site.addsitedir('{{ site_package }}') 
sys.path.append('{{ local_source }}') 
... 

'local_sourceは' '/ホーム/ jdoeに/ MY_PROJECT' と 'site_package' のようなもののようなものである「は/ usr/local/django.wsgiのためのように見えるものですlib/python2.6/site-packages 'にあります。

私はちょっと試してみなければならないことを覚えています。また、同じディレクトリに 'django.wsgi'と 'settings.py'の問題があることを覚えています。私はそれが助けて欲しい

1

混在環境は役に立ちません。

明らかに、いくつかのパッケージは、バンドルされたpythonにインストールされ、いくつかはvirtualenvにインストールされます。

私の提案、スティックはvirtualenvのを有効にする、WSGIファイル内でsource /path/to/venv/bin/activate

により、常に、virtualenvの上

と仕事をVIRTUALENVします。あなたはsite_packagesをインポートするのではなく、mod_wsgiにというのpythonを使用するように要求します。

activate_this = '/path/to/venv/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
+0

はうまく動作します、ありがとう。最後に私が知る必要があるのは、virtualenv'd vpsでsyncdbを実行する方法です。あなたが明示的に尋ねていない限り、psycopg2が有効なモジュールではないというエラーが発生しました。 – bytejunkie

+0

Virtualenvは、デフォルトでシステム全体のpythonパッケージにインストールされたモジュールに戻ってきます。したがって、システム全体のパッケージにpsycopyg2がある場合は、psycopyg2を使用できるようにしてください。私はpipからvirtualenvを再インストールすることをお勧めします。 –