質問

私の問題は、manage.py syncdbをvirtualenv内で実行することです。

ある時点では正常に動作していましたが、南にインストールしてPIPを更新して配布したときにいつか壊れているようです。

とにかく、VirtualEnvがアクティブになったら、インタラクティブなインタープリター内でアプリを正常にインポートできます。 mod_wsgiを介して実行すると、アプリもインポートされ、サイトは実行できます。

manage.py syncdbを実行すると、virtualenvにあるinstalled_appsでアプリを見つけることができません。システムインストールされたアプリを正常にピックアップしますが、virtualenvのみのアプリのみをインポートしようとすると失敗します。

役に立ちましたか?

解決

こんにちはこれは古い質問ですが、答えられていないのは見られました。あなたが何をしようとしているのかわからないが、基本的にはvirtualenvを使用できる2つのモードがあります。

  1. 開発のために、自己完結型の環境を作成します
  2. 展開用、自己完結型環境を作成します

最初のケースでは、Source venv/bin/activateで最初にVirtualenvをアクティブにする必要があります。展開するときは、Webサイトコードに対してVirtualenVがアクティブ化されることを確認する必要があります。個人的には、あなたのパスが正しく設定されるようにするために、次のアプローチを好みます。 (開発を行うときにこれをmanage.pyに追加するので、最初に環境をアクティブにすることを心配する必要はありません。

Modified Manage.py

#!/usr/bin/env python
import os.path

# Cater for Virtual env, add to sys.path
pwd = os.path.abspath(os.path.dirname(__file__))
project = os.path.basename(pwd)
new_path = pwd.strip(project)
activate_this = os.path.join(new_path,'venv','bin','activate_this.py')
execfile(activate_this, dict(__file__=activate_this))

from django.core.management import execute_manager
try:
    import settings # Assumed to be in the same directory.
except ImportError:
    import sys
    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
    sys.exit(1)

if __name__ == "__main__":
    execute_manager(settings)

これは、プロジェクトをどのように構築するかにより、ディレクトリ構造に変更する必要があります。私のプロジェクトはそうで構成されています:

TopLevelDir
|
|- Project DIR
|- venv
|- requirements 
|- deployment configs

他のヒント

これに対する簡単な解決策があります

仮想環境のビンにあるPythonからmanage.pyを起動するだけです。

したがって、あなたのPythonがここ/Home/Tom/Environments/my_env/bin/pythonであると言ってください。

/home/tom/environments/my_env/bin/python manage.py syncdb

次に、Djangoプロジェクト内の仮想環境のPythonにSymlinkを作成し、Env_pythonと呼んでください。

./env_python manage.py syncdb

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top