我在Ubuntu Server 14.04上 .
我正在尝试使用pypy 3.2来运行django应用程序 .
但每当我尝试pypy3 manage.py runserver 0:8000时,它会说:( fields.E210)因为没有安装Pillow,所以无法使用ImageField . 提示:在https://pypi.python.org/pypi/Pillow获取枕头或运行命令"pip install Pillow" .
但如果我尝试安装Pillow:pypy3 -m pip install Pillow
它说:要求已经是最新的:枕头在/usr/local/lib/python3.4/dist-packages/Pillow-2.9.0-py3.4-linux-x86_64.egg
然后我下载了源代码并尝试:pypy3 setup.py install
它说:属性错误install_layout
我不知道该怎么办!!
_ <
1 回答
你应该用pypy3创建一个合适的virtualenv作为你的解释器来运行你的django安装 - 在virtualenv内部,pip应该适用于django和Pillow - 没有奇怪的动作,如
pypy3 -m pip
,这些都是像你所拥有的那样经纪 .要创建一个virtualenv,其中默认的Python解释器是pypy3,只需执行
virtualenv -p pypy3 myprojectdir
- 并使用source myprojectdir/bin/activate
激活它 - 对于延迟类型,有virtualenv wrapper
可以创建更多的快捷方式 . 从那里开始,pip install
任何东西都会在这个目录中安装,而不会从任何其他Python中删除(或检查)你的系统包 .这是一个理智环境的方式 - 但是它确实你只是试图超越现在可用的边缘 - 在互联网上提到枕头兼容Pypy(当然,与python3) - 但是我找不到关于用pypy3运行Pillow的一个提及 .
我可以通过在我的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 22I上设置CFLAGS=-I/usr/lib64/pypy3-2.4.0/include/
检查你的pypy3-dev
包,看看这些包含文件在Ubuntu上的位置) .TL;DR 您可以为您的项目使用pypy2.x或常规cPython3.4(当然这是首选) - 其中一天依赖项将迎头赶上 . 无论哪种方式,Django都不应该从Pypy的JIT中获益太多 - 一个负载很重的网络服务器必须处理数据库连接可扩展性(不是Python)和良好的缓存(可以在Python上面的层上正确配置 - 看看"varnish") . 如果你对你的网站因不使用Pypy而遭受打击的请求有那么多处理,那么考虑使用celery / RPCs在另一个进程中运行瓶颈算法 - 并编写该部分程序以使用Pypy / Cython / pure C运行 .