【问题标题】:uWSGI in an environment with Python 2 and Python 3使用 Python 2 和 Python 3 的环境中的 uWSGI
【发布时间】:2018-04-08 02:19:01
【问题描述】:

答案: https://bradenmacdonald.com/blog/2015/uwsgi-emperor-multiple-python

原帖:

我从 python2 和 uwsgi 开始。让我的 Django 应用程序运行。我安装了 python3,现在我正试图让我的应用程序使用 python3 运行。

然而,uwsgi 似乎不想使用 python3 运行 - 即使将我的 virtualenv 的 venv 标志传递给它。我有一个皇帝管理着几个封臣,如果我加上 venv 标志说封臣不起作用。

在测试服务器上,我只是删除了 python2,然后将 /usr/bin/python 别名为 python3。这解决了这个问题。但这似乎是错误的解决方案,会导致我的应用程序停机时间更长。

在不删除 python3 的情况下让 uWSGI 与 python3 一起工作的最佳方法是什么?真的要创建别名吗?

更新 1: 在服务器上安装 pip3 apt install pip3 并使用 pip3 install uwsgi 安装 uwsgi 现在正在让 uwsgi 在 python3 中运行。但是我不明白这种行为。我现在收到一个与 ImportError: No module named 'encodings' 无关的错误

更新 2:uwsgi 现在使用的是 3.5 - 而我的 viortualenv 使用的是 python3.6。我用 python3.5 创建了一个环境。

如何为 python3.6 构建 uwsgi?由于以上是蛮力方法。

【问题讨论】:

  • uWSGI 是否会给您任何错误消息、回溯等?
  • @Wyatt 是的。这是最新的给定进度。 Python version: 3.5.2 (default, Sep 14 2017, 22:51:06) [GCC 5.4.0 20160609]Set PythonHome to /opt/mysite/venvs/p36Fatal Python error: Py_Initialize: Unable to get the locale encodingImportError: No module named 'encodings'Current thread 0x00007f22164ea700 (most recent call first):Aborted (core dumped)
  • 你可以apt install uwsgi而不是通过pip安装它吗?
  • 另外,您是否将/usr/bin/python 恢复到原来的样子?
  • @Wyatt /usb/bin/python 是正常的,别名在测试服务器上。所以我现在开始工作了。似乎uwsgi python版本都必须与virtualenv中的python版本匹配。生病更新主要问题

标签: python django python-3.x virtualenv uwsgi


【解决方案1】:

添加 --plugin python3 在运行命令中并使用安装 uwsgi python3 插件 apt install uwsgi-plugin-python3

【讨论】:

    最近更新 更多