2015-07-04 60 views
3

我在Ubuntu Server 14.04上。Pypy 3.2枕头问题

我想用pypy 3.2来运行一个django应用程序。

但是,每当我尝试pypy3 manage.py runserver 0:8000,它说: (fields.E210)由于未安装Pillow,因此无法使用ImageField。 提示:获取枕头https://pypi.python.org/pypi/Pillow或运行命令“pip install Pillow”。

但是,如果我尝试安装枕头: pypy3 -m PIP安装枕头

它说: 需求已经跟上时代的:枕头在/usr/local/lib/python3.4/dist-包/枕2.9.0-py3.4-Linux的x86_64.egg

然后我下载的源和尝试: pypy3的setup.py安装

它说: 属性错误install_layout

我不知道该怎么做!

_ <

回答

2

您应该创建pypy3为你解释一个适当的virtualenv牛逼运行你的Django安装 - 的的virtualenv内,PIP应该只是工作两个Django和枕头 - 不奇怪的动作像pypy3 -m pip它们会像你所拥有的那样受到破坏。

要创建的virtualenv在其内部默认的Python解释器pypy3只是做virtualenv -p pypy3 myprojectdir - 与source myprojectdir/bin/activate激活它 - 懒惰的类型有virtualenv wrapper它创建更加快捷键。从那里开始,pip install任何东西都会在这个目录中安装,而不会从任何其他Python中弄乱(或检查)你的系统包。

这就是拥有一个理智的环境的方式 - 但它会让你只是想超越现有的东西的边缘 - 在枕头的互联网上提到与Pypy兼容(当然,与python3) - 但我找不到一个关于pypy3运行枕头的提及。我可以通过在我的Linux系统上安装pypy3-devel并手动设置CFLAGS变量 - (我在这里使用Fedora - 在Ubunut上你应该有一个pypy3-dev包)。但即使它确实建立,它确实无法在pypy上运行,提高ImportError: unable to load extension module 'PIL/_imaging.pypy3-24.so': PIL/_imaging.pypy3-24.so: undefined symbol: PyExc_SystemError; (在fedora 22上设置CFLAGS=-I/usr/lib64/pypy3-2.4.0/include/检查你的pypy3-dev包,看看这些包含文件在Ubuntu的哪个位置)。

TL; DR对于您的项目,可以使用pypy2.x或常规cPython3.4(当然这是首选) - 这些日子中的一个依赖项将迎头赶上。无论哪种方式,Django不应该从Pypy的JIT中获益太多 - 重负载的Web服务器将不得不处理数据库连接的可伸缩性(而不是Python)和良好的缓存(它可以在Python上的层上正确配置 - 请参阅“清漆“)。如果你的网站因为没有使用Pypy而遭受攻击的请求有很多处理,可以考虑使用celery/RPC在另一个进程中运行瓶颈算法 - 然后编写该程序的一部分以使用Pypy/Cython/pure C.

+0

https://packaging.python。org/en/latest/installing.html#creating-virtual-environments –

+0

非常感谢,jsbueno !!! –

+0

Django肯定会在这里进行大量的处理。但有趣的派对是我刚开始的网站。我所拥有的是一个基本模板和一个页脚模板,它可以查询并遍历其内容,并在页脚中填入'最后4个添加的产品'。它无法忍受20req /秒。 数据库处理%小于0.5%。而且似乎一个简单的页面访问暂时需要10%的处理。这不会发生在我做同样的事情的PHP页面,查询数据库,然后在显示内容的网页上迭代。 我使用nginx与uwsgi。 –