使用PCRE支持重新编译uWSGI

88

运行uwsgi时,我收到了以下消息:

!!! no internal routing support, rebuild with pcre support !!!

我已经用以下命令安装了pcre(我想):

sudo apt-get install libpcre3 libpcre3-dev

我已经安装了pcre包,为什么我仍然收到这条消息?如果我需要重新安装uwsgi并激活pcre,我该怎么做?

另外,内部路由是否重要?

我认为它很重要,否则uwsgi的制造商不会让这条消息出现。我正在运行Ubuntu 12.04 LTS

7个回答

111
pip install uwsgi -I

不会重新编译uwsgi二进制文件,它只会重新安装Python的egg包。您需要使用pcre库重新构建uwsgi二进制文件。

sudo apt-get install libpcre3 libpcre3-dev

我认为最简单的方法就是卸载uwsgi然后再次运行pip安装程序。

pip uninstall uwsgi
sudo apt-get remove uwsgi

那么

pip install uwsgi

你应该能看到pip运行了setup.py脚本和一堆编译器消息。最后一条消息应该会显示类似于这样的内容:

你应该看到pip运行了setup.py脚本以及一系列编译器信息,最后一条信息应该显示类似于这样:

################# uWSGI configuration #################

pcre = True
kernel = Linux
malloc = libc
execinfo = False
ifaddrs = True
ssl = True
zlib = True
locking = pthread_mutex
plugin_dir = .
timer = timerfd
yaml = embedded
json = False
filemonitor = inotify
routing = True
debug = False
capabilities = False
xml = libxml2
event = epoll

############## end of uWSGI configuration #############

注意现在 pcre = true


5
我会尽力完成您的要求。翻译如下:我按照步骤操作,但编译器没有输出这个结果。你知道在Ubuntu下哪里可以找到那个配置吗?我在/etc目录下找不到。 - stelios
3
我曾遇到与你相同的问题,但是在CentOS上。我安装了gcc*pcre-devel而非libpcre3libpcre3-dev,现在UWSGI可以正常工作了。 - axplusb
1
@EsseTi:这个人聪明到足以找到并安装他的发行版上的库:apk install pcre pcre-dev - alanjds
我没有收到任何输出,但是这个解决方案对我起作用了。 - Mike Williamson
这个答案对我有用,但也需要在pip install命令中添加 --no-cache-dir 标志,来自@alanjds的回答。 - wuliwong
显示剩余4条评论

87

pip install uwsgi -I --no-cache-dir

这个命令将重新安装 (-I) uwsgi,但忽略已编译的缓存 (--no-cache-dir) 并使用新的库重新编译。


9
这是对我有效的答案,而不是被采纳的答案。 - Rick
2
这对我也起作用了。这是其中一个我认为只需要花几分钟就能解决的问题,但最终花费了数小时的问题。 - trench
1
对我来说运行良好,一旦完成了“pip uninstall uwsgi”,它就是一个全能解决方案。谢谢! - Daniel Porteous
在我考虑重启机器后,它对我有用。 - Sam Firke

12
pip uninstall uwsgi

sudo apt-get install libpcre3 libpcre3-dev

pip install uwsgi

我用上述命令解决了它。


8

补充@alanjds的答案,下面是将pcre支持添加到已安装的uWSGI的过程。

sudo apt-get install libpcre3 libpcre3-dev
pip install uwsgi -I --no-cache-dir

您无需卸载uWSGI


4

你尝试过以下方法吗:

pip install uwsgi -I 
< p > -I 标志将强制重新安装


运行了命令,uwsgi 重新安装成功。但是当我运行它时,仍然收到关于需要使用 PCRE 支持重新构建的相同消息。 - johnmic07
1
@johnmic07 libpcre3-dev就足够了,而且你不太可能需要路由。 - jwalker
如果您已经设置了virtualenv(我希望您已经这样做了),那么您的系统可能会混淆本地uwsgi、全局uwsgi(当您使用sudo pip安装时)以及系统(如apt-get)包之间的区别。我建议在virtualenv中构建它,然后查找构建输出中的pcre = yes,并在virtualenv的bin目录中查找该程序。 - leech
1
我不使用内部路由,所以不会担心它。希望其他人也不需要它 ;) - johnmic07
通过这个特定的设置(我只是在跟着教程做)时,我没有使用virtualenv,所以我认为那不是问题。谢谢! - johnmic07
显示剩余2条评论

2

对于那些想在 Amazon Linux 2 或任何红帽家族的发行版上解决此问题的人

首先,卸载 uwsgi

pip uninstall uwsgi

然后,安装 pcrepcre-devel
yum install pcre pcre-devel

然后,重新安装 uwsgi 软件包。
pip install uwsgi

0
也许你可以检查一下uid和gid,当我设置错误时,就会出现这个错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接