Gunicorn无法找到系统Renviron错误

时间:2018-07-16 00:57:13

标签: python r django virtualenv gunicorn

我已经为此奋斗了几天,达到了极限。

我正在从使用mod_wsgi / httpd移植Django项目以使用gunicorn / nginx

我已经使用virtualenv / virtualenvwrapper设置了虚拟环境,并在其中安装了需求文件以及一个gunicorn。 django项目是一个非常复杂的站点,具有很多依赖性。

当我使用

启动应用程序时
 `python manage.py runserver` 

一切正常,没有错误。但是,当我尝试使用Gunicorn

`gunicorn wsgi` 

我收到此错误

```
    cannot find system Renviron
    Fatal error: unable to open base package
```

我什至不知道从哪里开始进行故障排除。我已将.Renviron文件添加到我的用户目录,将os.environ["Renviron"]=/path添加到wsgi.py和settings.py文件中,将RPy2降级到2.5.6。似乎没有任何帮助。我不知道该怎么办任何帮助将不胜感激。

这是我的设置:

MacOS High Sierra (10.13.5) running in Parallels Desktop Lite 1.3.3 VM
Django==1.9.2
gunicorn=19.9.0
gevent==1.3.4
greenlet==0.4.13
whitenoise==3.3.1
rpy2==2.5.6
Homebrew==1.6.17
R=3.5.1

Django wsgi.py文件

    """
    WSGI config for ri project.
    """
    import os, sys, socket, site
    dev_path = "/Users/evans/.virtualenvs/base_env/"

    os.environ["R_HOME"]='/usr/local/lib/R/etc/Renviron'
    os.environ["Renviron"]='/usr/local/lib/R/etc/Renviron'

    host = socket.gethostname()
    print "HOST: ",host

    site.addsitedir(dev_path+'lib/python2.7/site-packages')

    # Activate the virtual environment
    # Taken from http://thecodeship.com/deployment/deploy-django-apache-virtualenv-and-mod_wsgi/
    activate_env = os.path.expanduser(dev_path+'bin/activate_this.py')
    execfile(activate_env, dict(__file__=activate_env))

    sys.path.insert(0,'/usr/local/var/django/code')
    sys.path.insert(0,'/usr/local/var/django/code/ri')

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ri.settings")

    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

Django settings.py文件

    """
    WSGI config for ri project.
    """
    import os, sys, socket, site
    dev_path = "/Users/evans/.virtualenvs/base_env/"

    os.environ["R_HOME"]='/usr/local/lib/R/etc/Renviron'
    os.environ["Renviron"]='/usr/local/lib/R/etc/Renviron'

    host = socket.gethostname()
    print "HOST: ",host

    site.addsitedir(dev_path+'lib/python2.7/site-packages')

    # Activate the virtual environment
    # Taken from http://thecodeship.com/deployment/deploy-django-apache-virtualenv-and-mod_wsgi/
    activate_env = os.path.expanduser(dev_path+'bin/activate_this.py')
    execfile(activate_env, dict(__file__=activate_env))

    sys.path.insert(0,'/usr/local/var/django/code')
    sys.path.insert(0,'/usr/local/var/django/code/ri')

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ri.settings")

    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

2 个答案:

答案 0 :(得分:0)

更新-因此,我无法真正找到解决问题的方法。但是,通过注释掉settings.py的INSTALLED_APPS部分中的应用程序,直到找到负责R依赖关系的应用程序,我才能够隔离它。原来我不需要它,所以我删除了该应用程序,现在一切正常。

虽然仍然很奇怪。

答案 1 :(得分:0)

R_HOME的值看起来不正确。它应该是目录名,例如"/usr/local/lib/R",而不是文件。

也就是说,R本身可以很好地启动,但是当您尝试从另一种语言(Python,Java或Tcl)使用它时,似乎容易出现此问题(找不到系统Renviron)。它可能需要R_HOME环境变量,这通常是不需要的。