[pypy-dev] PySide with PyPy
Johan Råde
johan.rade at gmail.com
Tue Feb 25 08:32:49 CET 2014
On 2014-02-23 08:44, Johan Råde wrote:
> Hi everyone,
>
> I'm trying to get PySide to run with PyPy using the Python C-API. I'm
> able to build and install PySide under PyPy on Windows, without any
> errors, but the installed libraries do not work. I'm working on it.
Maybe I'm making some progress.
Here is what happens now when I try to import PySide.QtCore:
>>>> import PySide.QtCore
Fatal error in cpyext, CPython compatibility layer, calling
PyDict_SetItemString
Either report a bug or consider not using this particular extension
<OpErrFmt object at 0x2467e24>
RPython traceback:
File "pypy_module_cpyext_api_2.c", line 17110, in PyDict_SetItemString
File "pypy_module_cpyext_pyobject.c", line 1136, in
BaseCpyTypedescr_realize
File "pypy_objspace_std_objspace.c", line 4657, in
allocate_instance__W_ObjectObject
File "pypy_objspace_std_typeobject.c", line 3911, in
W_TypeObject_check_user_subclass
Does this trace contain any useful information?
I'm using the official 2.2.1 release of PyPy.
-------------------------------------------------------------------------------------------
Updated instructions for building and installing PySide 1.2.1 with PyPy
2.2.1 on Windows:
1. Install the prerequisites:
* CMake
* Qt 4.x.y, with x >= 6, compiled with Visual Studio 2008
(I used Qt 4.8.5, the latest Qt 4 version.)
Binaries can be downloaded from http://qt-project.org/downloads
* iconv, libxml2, libxslt. (Not sure if they are needed.)
2. The sphinx package can cause problems.
If you don't have sphinx installed or if you have sphinx 1.1.3
installed, then you are fine.
But if you have sphinx 1.2.1 (the latest version) installed, then
the build will fail.
3. Download the file c-api-extra.h here:
https://dl.dropboxusercontent.com/u/525329/PySide/c-api-extra
(It contains definitions of some required C-API functions that are
missing from PyPy.)
Copy the file c-api-extra.h to <pypy-prefix>/include and add the
statement
#include "c-api-extra.h"
somewhere towards the end of <pypy-prefix>/include/Python.h
4. The definiton of PyMODINIT_FUNC in <pypy-prefix>/include/modsupport.h
will not work on Windows.
Change it to
#define PyMODINIT_FUNC __declspec(dllexport) void
5. Create a directory <pypy-prefix>/libs and copy
<pypy-prefix>/include/python27.lib there.
6. Download the following patched version of the PySide installation
package:
https://dl.dropboxusercontent.com/u/525329/PySide/PySide-1.2.1-patched.zip
(I have fixed some bugs in the PySide code.)
Unzip and copy the directory PySide-1.2.1-patched to a suitable
location;
the path to PySide-1.2.1-patched must not contain any spaces.
7. Build PySide:
Open a Visual Studio 2008 command prompt.
Change the current directory to PySide-1.2.1-patched.
Run the command:
pypy setup.py bdist_egg --qmake=c:/Qt/4.8.5/bin/qmake.exe
(Modify the path to qmake.exe if needed.)
On my laptop, the build takes about 20 minutes.
8. If you get errors such as
"mt.exe : general error c101008d: Failed to write the updated
manifest to the resource of file "shiboken.exe". The process cannot
access the file because it is being used by another process."
during the build, then you should turn off your anti-virus
software and try again.
9. Install PySide:
Change the current directory to PySide-1.2.1-patched/dist
Run the command
easy_install PySide-1.2.1-py2.7.egg
10. Go to directory
<pypy-prefix>/site-packages/PySide-1.2.1-py2.7.egg/PySide.
There you find 18 files with the file extension .pyd.
Change these file extensions to .pypy-22.pyd.
11. Add the directory
<pypy-prefix>/site-packages/PySide-1.2.1-py2.7.egg/PySide to the system
path. Reboot.
--Johan
More information about the pypy-dev
mailing list