如何配置uwsgi以使用特定版本的python?

如何配置uwsgi以使用特定版本的python?,python,django,debian,uwsgi,Python,Django,Debian,Uwsgi,我使用Debian9UWSGI和nginx作为几个Django站点的服务器。默认情况下,Debian拥有python 3.5。全球安装的uwsgi sudo -H pip3 install uwsgi 我决定将这些站点转移到python 3.7。为此,我将源文件中的新版本python 3.7安装到/usr/local/bin/python3.7文件夹中 我还重新创建了一个虚拟环境(与以前同名) 但现在我有一个错误,uwsgi仍然使用python 3.5 ● uwsgi.service - uW

我使用Debian9UWSGI和nginx作为几个Django站点的服务器。默认情况下,Debian拥有python 3.5。全球安装的uwsgi

sudo -H pip3 install uwsgi
我决定将这些站点转移到python 3.7。为此,我将源文件中的新版本python 3.7安装到/usr/local/bin/python3.7文件夹中

我还重新创建了一个虚拟环境(与以前同名)

但现在我有一个错误,uwsgi仍然使用python 3.5

● uwsgi.service - uWSGI Emperor service
   Loaded: loaded (/etc/systemd/system/uwsgi.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-12-13 15:06:55 UTC; 3 days ago
  Process: 2102 ExecStartPre=/bin/bash -c mkdir -p /run/uwsgi; chown gk:www-data /run/uwsgi (code=exited, status=0/SUCCESS)
 Main PID: 2106 (uwsgi)
   Status: "The Emperor is governing 1 vassals"
    Tasks: 7 (limit: 4915)
   CGroup: /system.slice/uwsgi.service
           ├─2106 /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
           ├─2110 /usr/local/bin/uwsgi --ini myblog.ini
           ├─2112 /usr/local/bin/uwsgi --ini myblog.ini
           ├─2113 /usr/local/bin/uwsgi --ini myblog.ini
           ├─2114 /usr/local/bin/uwsgi --ini myblog.ini
           ├─2115 /usr/local/bin/uwsgi --ini myblog.ini
           └─2116 /usr/local/bin/uwsgi --ini myblog.ini

Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: thunder lock: disabled (you can enable it with --thunder-lock)
Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: uwsgi socket 0 bound to UNIX address /run/uwsgi/protrack.sock fd 3
Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: setuid() to 1001
Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: Python version: 3.5.3 (default, Sep 27 2018, 17:25:39)  [GCC 6.3.0 20170516]
Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: Set PythonHome to /home/gk/Env/protrack
Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: Fatal Python error: Py_Initialize: Unable to get the locale encoding
Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: ImportError: No module named 'encodings'
Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: Current thread 0x00007fd43cf73b40 (most recent call first):
Снж 16 16:21:59 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: Mon Dec 16 16:21:59 2019 - [emperor] curse the uwsgi instance protrack.ini (pid: 22782)
Снж 16 16:22:02 server-1537436012497-s-1vcpu-1gb-fra1-01 uwsgi[2106]: Mon Dec 16 16:22:02 2019 - [emperor] removed uwsgi instance protrack.ini
如何重新配置uwsgi以使用python 3.7

/etc/uwsgi/sites/protrack.ini

[uwsgi]
project = protrack
uid = gk
base = /home/%(uid)

chdir = %(base)/%(project)
home = %(base)/Env/protrack
module = protrack.wsgi:application

master = true
processes = 5

# Finish off the configuration with the following lines
socket = /run/uwsgi/protrack.sock
chown-socket = %(uid):www-data
chmod-socket = 660
vacuum = true

您可以将uwsgi安装到virtualenv目录(而不是全局目录),并将其配置为在nginx中使用。这将确保uwsgi和您的python版本是相同的。

nope,只需安装一个新的,并配置您的
系统
脚本以使用新安装的。您能否更详细地描述如何配置您的系统脚本以使用新安装的脚本?我的意思是将
/etc/init.d/uwsgi
或etc脚本中的二进制路径修复到virtualenv uwsgi实例,而不是系统全局HM,我在/etc/init.d/folderah中没有uwsgi,那么您可以忘记这个建议:)
[uwsgi]
project = protrack
uid = gk
base = /home/%(uid)

chdir = %(base)/%(project)
home = %(base)/Env/protrack
module = protrack.wsgi:application

master = true
processes = 5

# Finish off the configuration with the following lines
socket = /run/uwsgi/protrack.sock
chown-socket = %(uid):www-data
chmod-socket = 660
vacuum = true