[liblouis-liblouisxml] Re: Problems with Python bindings on Win32

  • From: James Teh <jamie@xxxxxxxxxxx>
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Sat, 22 Aug 2009 20:22:19 +1000

The Python bindings are maintained using autotools like the rest of the source distribution. They cannot be maintained separately, since the source distribution has to be built with autotools. If you use the autotools configure script, louis/__init__.py will be generated and you can then use setup.py to install it correctly. liblouis-0.dll is now the correct name for the dll.


This is not non-standard practice for a package which requires bindings. Libraries intended from the beginning to be Python libraries will obviously use distutils alone, but this is not the case for libraries like this. There is a similar situation for BRLTTY.

If it helps, I generate the appropriate stuff for Windows Python bindings of liblouis for the NVDA project. I haven't yet built the latest release, but you will be able to find them here once they are built:
http://www.nvda-project.org/3rdParty/

Jamie

On 22/08/2009 8:10 PM, Leo wrote:
Hi,

I cannot install the new bindings. I am not even sure if the .zip file does
contain the right .dll. Apart from liblouis-xml, it contains liblouis-0.dll.
I don't know what the "-0" is good for and I don't know if it contains the
liblouis code.

To install the Python bindings to upgrade to v1.7, I have done the
following:
- copy the liblouis-0.dll to the windows/system32 dir and rename it to
liblouis.dll, as the previous version was also named liblouis.dll.
- run "python setup.py install" from the Python bindings subdir of the
tarball.

First, the setup script did not find __init__.py as this file has a strange
suffix .in which might be removed when running make. Windows users usually
do not have make. So I renamed __init__.py.in to __init__.py and tried
again. Yet, the .dll could not be imported. See the traceback below for
details. Forgive me for reiterating my earlier call for a well-maintained
Python package that installs out of the box on all platforms.

Leo


Traceback (most recent call last):
   File "setup.py", line 6, in<module>
     import louis
   File "C:\Dokumente und Einstellungen\stefan\Eigene
Dateien\dev\liblouis\python
\louis\__init__.py", line 38, in<module>
     liblouis = _loader["###LIBLOUIS_SONAME###"]
   File "C:\Python26\lib\ctypes\__init__.py", line 428, in __getitem__
     return getattr(self, name)
   File "C:\Python26\lib\ctypes\__init__.py", line 423, in __getattr__
     dll = self._dlltype(name)
   File "C:\Python26\lib\ctypes\__init__.py", line 353, in __init__
     self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] Das angegebene Modul wurde nicht gefunden

For a description of the software and to download it go to
http://www.jjb-software.com

--
James Teh
Email/MSN Messenger/Jabber: jamie@xxxxxxxxxxx
Web site: http://www.jantrid.net/
For a description of the software and to download it go to
http://www.jjb-software.com

Other related posts: