각기 다른 virtualenv에서 특정 Python 앱을 제공하는 다양한 Vassal을 사용하여 uwsgi Emperor를 실행하고 있습니다. uwsgi는 자체 Python 2.7 인터프리터로 컴파일되었으므로 Python 3과 함께 virtualenv를 사용하면 vassal.log에 다음 오류가 발생합니다.
ImportError: No module named site
이 오류의 원인은 uwsgi가 내장 Python 2.7 인터프리터를 사용하고 있지만 virtualenv 디렉토리는 Python 3 인터프리터 만 지원한다는 것입니다. 실제로 다른 uwsgi를 사용하면 (간단히 pip install uwsgi
동일한 virtualenv 에 설치 하여) 오류가 사라집니다. 그러나 한 황제가 여러 가지 다른 가상 환경을 지배하고 싶기 때문에 각각에 별도의 uwsgi를 설치하는 것은 옵션이 아닙니다.
Stackoverflow 에 대한 이 답변 에 따르면 , 이것을 해결하는 올바른 방법은 다른 파이썬 인터프리터로 uwsgi를로드 가능한 모듈로 컴파일하는 것입니다. 이 방법을 사용하기 전에 다른 인터프리터 플러그인을 사용하도록 Vassal을 구성하는 방법을 알고 싶습니다.
현재 다음 설정으로 /etc/rc.local에서 시작된 황제가 하나 있습니다.
[uwsgi]
uid = www-data
gid = www-data
master = true
emperor = /etc/uwsgi/vassals
daemonize = /var/log/uwsgi/emperor.log
그런 다음 다음과 같은 ini 파일을 가진 많은 Vassals가 있습니다.
[uwsgi]
master = false
single-interpreter = true
socket = /tmp/%n.sock
virtualenv = /home/user/.virtualenvs/djangoproject
chdir = /home/user/djangoproject
wsgi-file = project/wsgi.py
logto = /var/log/uwsgi/%n.log
몇 가지 인터프리터 플러그인으로 uwsgi의 조정 버전을 컴파일하는 데 아무런 문제가 없지만 실제로 이러한 별도의 인터프리터를 사용하려면 구성에서 무엇을 변경 해야하는지 알고 싶습니다 . 하나의 vassal.ini를 말할 수 있습니까?
plugin = python3.4
그리고 또 다른 :
plugin = python2.7
?
동일한 uwsgi Emperor에서 Python 2.7과 Python 3 virtualenvs를 결합하는 방법을 알아낼 수 있도록 도와주세요.
plugins=python3
또는plugins=python36