Pypy 3.2枕头问题

时间:2015-07-04 01:09:39

标签: python python-3.x pypy

我在Ubuntu Server 14.04上。

我正在尝试使用pypy 3.2来运行django应用程序。

但每当我尝试pypy3 manage.py runserver 0:8000时,它会说: (fields.E210)无法使用ImageField,因为未安装Pillow。         提示:在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 个答案:

答案 0 :(得分:2)

你应该用pypy3创建一个合适的virtualenv作为你的解释器来运行你的django安装 - 在virtualenv内部,pip应该适用于django和Pillow - 没有像pypy3 -m pip那样的奇怪机动,这些机会像teh一样受到破坏你有一个。

要创建一个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上面的层上正确配置 - 采取一个看看"清漆")。如果你对你的网站因不使用Pypy而遭受打击的请求有那么多处理,那么考虑使用celery / RPCs在另一个进程中运行瓶颈算法 - 并编写该部分程序以使用Pypy / Cython / pure C运行。