我已经为此奋斗了几天,达到了极限。
我正在从使用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()
答案 0 :(得分:0)
更新-因此,我无法真正找到解决问题的方法。但是,通过注释掉settings.py的INSTALLED_APPS部分中的应用程序,直到找到负责R依赖关系的应用程序,我才能够隔离它。原来我不需要它,所以我删除了该应用程序,现在一切正常。
虽然仍然很奇怪。
答案 1 :(得分:0)
R_HOME
的值看起来不正确。它应该是目录名,例如"/usr/local/lib/R"
,而不是文件。
也就是说,R本身可以很好地启动,但是当您尝试从另一种语言(Python,Java或Tcl)使用它时,似乎容易出现此问题(找不到系统Renviron)。它可能需要R_HOME
环境变量,这通常是不需要的。