在pcre支持下重建uwsgi


76

运行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

谢谢您的帮助!

Answers:


102
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脚本和一堆编译器消息。最后一条消息应显示以下内容:

################# 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现在


3
我遵循了该过程,但没有从编译器获得此输出。您知道我可以在ubuntu下找到该配置吗?我在/ etc下找不到它
stelios

3
我在CentOS上也遇到了同样的问题。我安装了gcc*pcre-devel而不是libpcre3和,libpcre3-dev并且UWSGI现在可以正常工作。
axplusb

您还可以使用进行pip重新安装sudo /opt/storwizerest-venv/bin/pip install --force-reinstall -U --no-deps uwsgi--force-reinstall将使-U重新安装相同的版本(令人困惑的是,--force-reinstall没有则不执行任何操作-U),并且--no-deps将阻止尝试更新所有依赖项。
Taywee

如果使用高山分布怎么办?
EsseTi '18

1
@EsseTi:这个家伙很聪明,可以弄清楚如何在他的发行版中找到和安装库:apk install pcre pcre-dev
alanjds

74

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

-I如@leech所说,它会重新安装(),但会忽略已编译的缓存(--no-cache-dir),并使用新的库重新编译该东西。


9
这是对我有用的答案,而不是公认的答案。
瑞克(Rick)

1
这也为我工作。这是我认为只需几分钟即可解决的问题之一,但最终花费了数小时。
开沟

1
完成后,对我来说就很好,一个完整的解决方案pip uninstall uwsgi。谢谢!
Daniel Porteous

11
pip uninstall uwsgi

sudo apt-get install libpcre3 libpcre3-dev

pip install uwsgi

我用上面的命令解决了。


5

完成@alanjds答案,以下是将pcre支持添加到已安装的uWSGI的过程。

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

您不需要卸载uWSGI


4

你试过了吗:

pip install uwsgi -I 

-I标志将强制其重新安装


运行命令并重新安装uwsgi正常。但是当我运行它时,我仍然收到关于使用PCRE支持进行重建的相同信息。
johnmic07

1
@ johnmic07 libpcre3-dev已经足够,您不太可能需要路由
jwalker 2014年

如果您有virtualenv设置(希望您这样做),则系统可能会在本地uwsgi,全局uwsgi(使用进行安装时sudo pip)与系统(如apt-get)软件包之间造成混淆。我会在virtualenv中建立它,然后寻找pcre = yes生成输出,并找到在virtualenv中的程序bin目录
水蛭

而且,正如jwalker所说,如果您不使用内部路由,则实际上不需要此路由。
ech

1
我不使用内部路由,因此不必担心。希望那里没有其他人也需要它;)
johnmic07

1

对于那些想要解决此问题amazon linux 2或任何红帽家庭发行版的人

首先,卸载uwsgi软件包

pip uninstall uwsgi

然后,安装pcrepcre-devel

yum install pcre pcre-devel

然后,重新安装uwsgi软件包

pip install uwsgi

0

如果您尝试了所有上述操作,但仍然存在相同的错误,并且与以下错误相同,请检查命令参数,尤其是--http-socket /path/to/your.sock。那就是path ='/ path / to'必须存在

thunder lock: disabled (you can enable it with --thunder-lock)
bind(): No such file or directory [core/socket.c line 230]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.