我在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
我不知道该怎么做!!
_<
答案 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运行。