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

标签 python django debian uwsgi

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

sudo -H pip3 install uwsgi

我决定将网站转移到 python 3.7。为此,我将源文件中的新版本 python 3.7 安装到 /usr/local/bin/python3.7 文件夹中。

我还重新创建了一个虚拟环境(与之前的名称相同)

mkvirtualenv -p /usr/local/bin/python3.7 protrack

但是现在我遇到了一个错误,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 版本相同。

关于python - 如何配置 uwsgi 以使用特定版本的 python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59360586/

相关文章:

python - 围绕数字生成圆形图案的最简单方法

python - 获取 numpy 数组中项目的索引,其中值在列表中

python - Google Calendar API 如何查找与会者列表

Linux 脚本组添加

linux - 我制作了防火墙脚本但无法正常工作

linux - SSH 控制台上的奇怪行为?

python - 如何使用 scikit learn pipelines 简化数据预处理

javascript - 我的 Web 应用程序中的搜索栏返回我在 Django 中的模型的结果列表

javascript - 如何使用 django 将 html 按钮的 id 传递给 python 文件?

python - 在Django1.11表单中,我该如何处理url?