2016-04-26 19 views
5

私はForeman/Honchoを使用してProcfileベースのDjangoアプリケーションを管理しようとしています。私がアプリのビューを起動すると、通常のpython manage.py runserver、すべて正常に動作します。私はhoncho startまたはforeman start webを経由してアプリを起動したときしかし、私はこのエラーが発生します:Django - インストールされているモデルが見つかりません

11:59:31 system | web.1 started (pid=27959) 
11:59:31 web.1 | [2016-04-26 11:59:31 -0700] [27959] [INFO] Starting gunicorn 19.4.5 
11:59:31 web.1 | [2016-04-26 11:59:31 -0700] [27959] [INFO] Listening at: http://0.0.0.0:5000 (27959) 
11:59:31 web.1 | [2016-04-26 11:59:31 -0700] [27959] [INFO] Using worker: sync 
11:59:31 web.1 | [2016-04-26 11:59:31 -0700] [27962] [INFO] Booting worker with pid: 27962 
11:59:31 web.1 | [2016-04-26 18:59:31 +0000] [27962] [ERROR] Exception in worker process: 
11:59:31 web.1 | Traceback (most recent call last): 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/gunicorn/arbiter.py", line 515, in spawn_worker 
11:59:31 web.1 |  worker.init_process() 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/gunicorn/workers/base.py", line 122, in init_process 
11:59:31 web.1 |  self.load_wsgi() 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/gunicorn/workers/base.py", line 130, in load_wsgi 
11:59:31 web.1 |  self.wsgi = self.app.wsgi() 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi 
11:59:31 web.1 |  self.callable = self.load() 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load 
11:59:31 web.1 |  return self.load_wsgiapp() 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp 
11:59:31 web.1 |  return util.import_app(self.app_uri) 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/gunicorn/util.py", line 357, in import_app 
11:59:31 web.1 |  __import__(module) 
11:59:31 web.1 | File "../wsgi.py", line 17, in <module> 
11:59:31 web.1 |  application = get_wsgi_application() 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application 
11:59:31 web.1 |  django.setup() 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/django/__init__.py", line 18, in setup 
11:59:31 web.1 |  apps.populate(settings.INSTALLED_APPS) 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/django/apps/registry.py", line 85, in populate 
11:59:31 web.1 |  app_config = AppConfig.create(entry) 
11:59:31 web.1 | File "/Library/Python/2.7/site-packages/django/apps/config.py", line 90, in create 
11:59:31 web.1 |  module = import_module(entry) 
11:59:31 web.1 | File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
11:59:31 web.1 |  __import__(name) 
11:59:31 web.1 | ImportError: No module named django_messages 
11:59:31 web.1 | [2016-04-26 18:59:31 +0000] [27962] [INFO] Worker exiting (pid: 27962) 
11:59:31 web.1 | [2016-04-26 11:59:31 -0700] [27959] [INFO] Shutting down: Master 
11:59:31 web.1 | [2016-04-26 11:59:31 -0700] [27959] [INFO] Reason: Worker failed to boot. 
11:59:31 system | web.1 stopped (rc=3) 

これはdjango-messageモジュールをインストールしようとしています。他のモジュールと同じ問題があります。私もdjango-webpack-loaderと同じ問題にぶつかっています。また、私はvirtualenv内とそれが無効化されたときの両方でエラーを受け取っていることに言及する必要があります。ここで

はジャンゴ・メッセージをインストールするためのコマンドです:

$> pip install django-messages 
Requirement already satisfied (use --upgrade to upgrade): django-messages in ./lib/python2.7/site-packages 

インストール済みのアプリ。

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'my_app', 
    'django_messages', 
) 

私はトラブルシューティングに役立つために提供することができ、他のどのような情報がわからないんだけど、基本的な質問は、私は職長/本町で動作するようにアプリケーションをインストールしますかどのようにでしょうか?

+0

ファイル.env。あなたはvirtualenvを使いますか? –

+0

私は..私はvirtualenvとそれを無効にして両方のための同じエラーを取得しています。 – dperconti

+0

私は参照してください。それで、 'honcho'はシステムのPythonを使うようです。一方、あなたはvirtualenvにライブラリをインストールします。 –

答えて

3

HonchoとForemanはvirtualenvのPython実行ファイルとlibsを使用せず、Honcho Procfileを含めていない間にpythonを呼び出すだけでシステム全体の実行可能ファイルとlibsが使用されます。

残念ながら、ホチョウはサブプロセスの1つが終了したときに終了するので、をProcfileの一部として呼び出すことはできません。これについては、in this Github issue threadを参照してください。しかし、あなたがチェーンにそれらを一緒に&&演算子を使用して1つのサブシェルで、このスクリプトとあなたのPythonスクリプトを実行することができます。

また
web: source venv/bin/activate && python manage.py 

、あなたはより良い運を明示的にインポートする前に、あなたのvirtualenvののライブラリに引き出すために、あなたのwsgi.pyラッパーを変更するかもしれませんDjangoアプリケーション:

# Activate your virtual env 
activate_env=os.path.expanduser("/path/to/virtualenv/bin/activate_this.py") 
execfile(activate_env, dict(__file__=activate_env)) 

これらは、アプリケーションが正しいサイトライブラリを読み込むことを保証するために、(os以外)の任意のモジュールをインポートする前に実行する必要があります。

最後に、Honcho自体は、プロセスが実行される環境を設定するProcfileと共にファイル.envの使用をサポートしています。このファイルの形式は、bashスクリプトと同じです。 .envファイルを使用して、PYTHONPATHPYTHONHOMEをVirtualenv内のライブラリを指すように設定し、ProcfileからVirtualenv内に明示的なPythonインタプリタを指定することができます。

あなたのコンソールと `honcho`の間に、Pythonのインスタンスが異なるようです

PYTHONHOME=/path/to/virtualenv/lib/python2.7 
PYTHONHOME= 
+1

'が修正されていません。本当にありがとう! – dperconti

関連する問題