uWSGI运行错误版本的Python

时间:2013-12-11 22:20:18

标签: python django version pip uwsgi

我的django / uwsgi / python因分段错误而崩溃,因为uWSGI显然正在加载不同版本的Python。

我刚刚使用pip安装了uWSGI。这个SO question解决了涉及从源代码编译的解决方案,但我想避免这种情况。

mihai$ /usr/bin/python
Python 2.7.5 (default, Aug 25 2013, 00:04:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Segmentation fault: 11

mihai$ /usr/local/bin/python
Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>>

有什么建议吗?

我希望有一些--flag可以告诉uWSGI使用什么版本的python ......

2 个答案:

答案 0 :(得分:4)

遗憾的是,如果编译的python是错误的,你必须重新编译它。 由于它是直接链接到Python而构建的,如果你使用的是另一个符号将不匹配。

在您提到的评论中,您使用了pip但未获得正确的Python版本。也许你使用的是错误的点子?例如在Ubuntu上你有Python 2.7和3.3。有一个pip-2.7和一个pip-3.3。如果您正在使用virtualenv,请确保使用virtualenv中的pip进行安装。

答案 1 :(得分:0)

可能导致此问题的一个不明显的事情:您之前使用不同的 python 环境安装了 uwsgi,并且生成的编译后的 uwsgi 轮已保存在您的 pip 轮缓存中。然后,当您在当前的 python 环境中安装 uwsgi 时,pip 只是简单地抓取了缓存的轮子,而不是实际为您当前的 python 版本重建 uwsgi。

仔细观察输出,看看 pip 是否使用了缓存的轮子。如果是这样,您可以删除缓存的轮子并重新安装 uwsgi 或使用命令行参数重新安装以禁用缓存:

pip uninstall uwsgi
pip install --no-cache-dir uwsgi