首页 文章

Pypy 3.2枕头问题

提问于
浏览
3

我在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 回答

  • 2

    你应该用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运行 .

相关问题