为PyPy建造枕头 - 未解决的外部

时间:2013-12-16 02:06:51

标签: python windows build pypy pillow

我一直在使用easy_install在我的Windows(XP)安装上为PyPy(2.1)构建Pillow。 问题似乎与它缺少所需的python / pypy标题(?)有关。我一直在谷歌上下搜索好几天,希望找到一些可以详细说明我遇到的问题,但没有发现任何有用的东西。

我得到的错误日志是:

...

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox
/MD /W3 /GS- /DNDEBUG -IlibImaging -IC:\pypy-21\include -IC:\pypy-21\include /Tc
libImaging\UnsharpMask.c /Fobuild\temp.win32-2.7\Release\libImaging\UnsharpMask.obj

...
decode.obj : error LNK2001: unresolved external symbol __imp__PyType_Type
encode.obj : error LNK2001: unresolved external symbol __imp__PyType_Type
map.obj : error LNK2001: unresolved external symbol __imp__PyType_Type
encode.obj : error LNK2019: unresolved external symbol __imp___PyString_Resize r
eferenced in function __encode
encode.obj : error LNK2019: unresolved external symbol __imp__PyErr_SetFromErrno
 referenced in function __encode_to_file
encode.obj : error LNK2019: unresolved external symbol __imp__PyExc_SystemError
referenced in function __setimage
display.obj : error LNK2019: unresolved external symbol __imp__PyList_Append ref
erenced in function _list_windows_callback@8
display.obj : error LNK2019: unresolved external symbol __imp__PyErr_Print refer
enced in function _callback_error
display.obj : error LNK2019: unresolved external symbol __imp__PyFile_WriteStrin
g referenced in function _callback_error
display.obj : error LNK2019: unresolved external symbol __imp__PySys_GetObject r
eferenced in function _callback_error
display.obj : error LNK2019: unresolved external symbol _PyObject_CallFunction r
eferenced in function _windowCallback@16
path.obj : error LNK2001: unresolved external symbol _PyObject_CallFunction
display.obj : error LNK2019: unresolved external symbol __imp__PyThreadState_Swa
p referenced in function _windowCallback@16
display.obj : error LNK2019: unresolved external symbol __imp__PyThreadState_Get
 referenced in function _PyImaging_CreateWindowWin32
path.obj : error LNK2019: unresolved external symbol __imp__PyErr_ExceptionMatch
es referenced in function _PyPath_Flatten
path.obj : error LNK2019: unresolved external symbol __imp__PyNumber_Check refer
enced in function _PyPath_Flatten
path.obj : error LNK2019: unresolved external symbol __imp__PyExc_RuntimeError r
eferenced in function _path_clip_polygon
build\lib.win32-2.7\_imaging.pypy-21.pyd : fatal error LNK1120: 61 unresolved ex
ternals
error: command 'C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.e
xe' failed with exit status 1120

我真的很难理解为什么会这样,我实在没有任何线索。我很容易为CPython构建包。

据我所知,依赖文件夹也包括在内:“-IC:\ pypy-21 \ include”(?)。

有关更多日志的信息,请查看http://pastebin.com/raw.php?i=kKnNpRgr

修改 - 解决方案

在抓住PyPy 2.2.1后,我发现我确实错过了我的“PyPy-21 / Include”路径中的一些文件。所以.. Pillow安装好了新发现的标题,它运行完美! =)

1 个答案:

答案 0 :(得分:-1)

PyPy没有实现CPython中的整个C扩展模块API。或者更确切地说,PyPy实现了Cext模块最有可能使用的符号的合理子集,但是PyPY无法实际提供CPython提供的每个符号而不吸入大部分CPython。我希望CPython对它暴露给外部代码的符号更加小心,但我不相信它。

PyPy最适合使用Pure Python模块。它也可以(相当慢)运行C扩展模块的子集。你可能正在努力让PyPy导入这个特殊的CPython C扩展模块。

请记住,你不能在PyPy中使用JIT C代码。