uWSGI失败,没有名为encoding Error的模块

时间:2013-04-29 06:34:14

标签: virtualenv pyramid uwsgi

我正在尝试使用金字塔设置uWSGI,但在尝试uwsgi --ini-paste development.ini

时出现此错误

Python version: 3.2.3

错误讯息:

uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
Python version: 3.2.3 (default, Oct 19 2012, 20:08:46)  [GCC 4.6.3]
Set PythonHome to /root/path/to/virtualenv
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named encodings

以下是我在development.ini中的内容

[uwsgi]
socket = /tmp/uwsgi.sock
master = true


processes = 4

harakiri = 60
harakiri-verbose = true
limit-post = 65536
post-buffering = 8192

daemonize = ./uwsgi.log
pidfile = ./pid_5000.pid

listen = 256 

max-requests = 1000

reload-on-as = 128 
reload-on-rss = 96
no-orphans = true

log-slow = true
virtualenv = /root/path/to/virtualenv

我想我已经检查了所有可能的内容,包括以下内容

echo LANG:$LANG LC_CTYPE:$LC_CTYPE
LANG:en_US.UTF-8 LC_CTYPE:

我正在使用virtualenv,并且在环境处于活动状态时安装了uWSGI。我还检查过我的虚拟环境的lib有一个名为encoding的包(指向我的主要python3.2安装)

我还检查了this回答和this

当我的virtualenv未处于活动状态时,我之前安装了uWSGI,但之后我正确安装了它,并从之前的安装中删除了可执行文件和py文件。

有没有办法获取详细日志,如果有,请告诉我。 提前致谢

9 个答案:

答案 0 :(得分:12)

检查

virtualenv = /root/path/to/virtualenv

指向正确的道路。 我通过修复这个错误的路径解决了我的错误。

答案 1 :(得分:4)

在我的情况下,它基本上是因为我使用python 2.7作为主要解释器,uwsgi选择pyhon3插件。您可能需要使用以下方法强制它:

  

插件= python32

其中python32是pythhon3插件的合适名称。

你检查过这个:uwsgi python3 plugin doesn't work

答案 2 :(得分:3)

我今天也遇到了这个问题,我尝试设置plugins=python34,但它在Ubuntu 14.04和Python 3.4.3上不起作用

这就是我为解决这个问题而采取的措施:

  1. sudo pip uninstall uwsgi

  2. 运行sudo pip install uwsgi时出现问题,然后先运行:

    sudo apt-get install python-dev

  3. (sudo)pip install uwsgi

答案 3 :(得分:2)

运行uwsgi命令(带有您的选项),如下所示:

/<path-to-your-virtualenv-bin>/uwsgi --http :8008 --module project.wsgi --venv /<path-to-your-virtualenv> --chdir /<path-to-your-project>

你会发现问题。

你错过了模块参数吗?

答案 4 :(得分:2)

刚遇到同样的问题。之后我意识到我在virtualenv中安装了带pip install uwsgi的uwsgi。一旦我离开了virtualenv,我就在本地系统上安装了uwsgi pip3 install uwsgi(注意我写的是pip而不是pip3)。所以我用pip3 uninstall uwsgi卸载了,我重复了pip install uwsgi。像魅力一样工作。

答案 5 :(得分:1)

我有类似的问题。就我而言,问题出在uid的{​​{1}}和guid参数中。 uwsgi.ini用户无权在virtualenv中运行python。

答案 6 :(得分:0)

我遇到了类似的错误消息,但是有一个python版本变体:

Python version: 3.4.3 (default, Nov 28 2017, 16:44:58)  [GCC 4.8.4]

这是因为尝试使用python3.6虚拟环境,但uwsgi正在为python3.4设置。我使用python3.4重新设置虚拟环境,一切都很顺利。

答案 7 :(得分:0)

Edward's answer的基础上,我改用uWSGI而不是pip3.6重新安装了pip3,Python 3.4.8是服务器上的默认Python 3:

$ python3 --version
Python 3.4.8

答案 8 :(得分:0)

检查 import java.util.Scanner; public class Recursion { public static String[] reverse(int m, int n, String[] str) { String[] p = new String[str.length]; if (m == n) return str; else if (m > n) return str; else { str[m] = p[n]; str[n] = p[m]; return reverse(m+1, n-1, str); } } public static void main(String[] args) { Scanner enter = new Scanner(System.in); System.out.print("t = "); int t = enter.nextInt(); System.out.print("s = "); String str = enter.nextLine(); String[] Strings = str.split(" "); int k = Strings.length; if (t == 1) { for (String s : Strings) System.out.println(s); System.out.println("The reversal is"); reverse(k-k, k, Strings); for (String s : Strings) System.out.println(s); } } } 的路径。确保您没有使用以下内容:virtualenv

~/.virtualenvs/xxx符号指向用户的主目录。因此,对于不同的用户,此路径将指向不同的位置。

如果您不太确定,请将~移到virtualenv之类的地方。