How to install python-ldap on a python 2.7 virtualenv on windows without compiling

Serafeim picture Serafeim · Apr 10, 2013 · Viewed 10.7k times · Source

I am using Windows as my main python 2.7 development environment and I want to install python-ldap on a virtual environment.

The python-ldap package needs compiling :( and of course I can't compile it in my environment. So I tried finding binaries in order to install them in my virtual environment through easy_install (FYI you can do easy_install package.exe and the package will be installed). I found the distributed binaries here: https://pypi.python.org/pypi/python-ldap/

Unfortunately, they give only .msi packages for python 2.7 !!! Why do people use .msi ? MSI CANNOT BE INSTALLED THROUGH easy_install. I HATE MSI %$#$^#$^#$

Yes I can install the .msi package by executing it but it will be installed in the global python packages and not on my virtual environment!

Please, can anybody help me ? I remember having this exact problem in a previous project and I had to develop it outside of a virtual environment -- but I cannot do this now :(

Update: I installed python-ldap system-wide and copied the directories ldap and python_ldap-2.4.10-py2.7.egg-info from PYTHON_GLOBAL\Lib\site-packages to VIRTUALENV\Lib\site-packages and seems to be working now. However I really don't like that solution so I won't answer my question with that. Also, Alexander's comment on recreating my virtualenv with --system-site-packages probably will be working but this means that I'd need to uninstall a lot of my global packages packages and then install again my virtual packages etc and in general it's not DRY :(

Update 2: After trying cgohlke's suggestion, I saw that the contents of the MSI were the two directories I mentioned above along with the files dsml.py, ldapurl.py and ldif.py. So I also copied this to my VIRTUALENV\Lib\site-packages. Now I believe that the installation is ok :). But I believe that cgohlke's is the best one - just use msiexec.exe to extract the contents of the msi directly to your VIRTUALENV.

Update 3: In a similar question (Installing python-ldap in a virtualenv on Windows) I found a really interesting link: http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap. In there you will be able to find .EXE install packages for python-ldap and LOTS of others!!! So finally by downloading these you'll be able to easy_install them in your virtualenv!

Answer

Ivan Anishchuk picture Ivan Anishchuk · Jan 9, 2014

How about installing it system-wide, creating an egg from installed files and then using that egg in your virtual env? You can find some info about egg structure here: http://pythonhosted.org/setuptools/formats.html