首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django - Foreman找不到已安装的模型

Django - Foreman找不到已安装的模型
EN

Stack Overflow用户
提问于 2016-04-26 19:09:15
回答 1查看 285关注 0票数 5

我试图使用福尔曼 / 洪丘来管理基于Procfile文件的Django应用程序。当我启动应用程序查看普通的python manage.py runserver时,一切都很好。但是,当我通过honcho startforeman start web启动应用程序时,我会收到以下错误:

代码语言:javascript
运行
复制
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-信息模块。我和其他模块也有同样的问题。我在django-webpack-装载机中也遇到了同样的问题。我还应该指出,无论是在虚拟环境中还是在停用它时,我都会收到错误。

下面是安装django消息的命令:

代码语言:javascript
运行
复制
$> pip install django-messages
Requirement already satisfied (use --upgrade to upgrade): django-messages in ./lib/python2.7/site-packages

安装了应用程序;

代码语言:javascript
运行
复制
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'my_app',
    'django_messages',
)

我不知道我还能提供哪些其他信息来帮助排除故障,但最基本的问题是如何让安装的应用程序与foreman / honcho一起工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-30 15:19:26

Honcho和Foreman不使用您的虚拟环境中的Python可执行文件和lib,虽然您没有包含您的Honcho,但是只要调用python就可以使用系统范围的可执行文件和lib。

不幸的是,您不能仅仅调用/path/to/virtualenv/bin/activate作为Procfile的一部分,因为Honcho在其中一个子进程退出时退出,正如讨论过的在这个Github问题线程中。但是,您可以使用&&操作符在一个子subshell中执行此脚本和python脚本,将它们链接在一起:

代码语言:javascript
运行
复制
web: source venv/bin/activate && python manage.py 

或者,在导入Django应用程序之前,您可以更幸运地修改您的wsgi.py包装器,以显式地导入您的虚拟程序库:

代码语言:javascript
运行
复制
# 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解释器。

.env文件

代码语言:javascript
运行
复制
PYTHONHOME=/path/to/virtualenv/lib/python2.7
PYTHONHOME=
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36873730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档