Install m2crypto on a virtualenv without system packages Install m2crypto on a virtualenv without system packages python python

Install m2crypto on a virtualenv without system packages


There seems to be a regression bug from an earlier version of M2Crypto.

After placing M2Crypto's source in your virtualenv, you can try to patch it with the diff code below.

You do this by downloading the source code, untar it via:tar -xzf M2Crypto-0.21.1.tar.gz

This should create the directory M2Crypto-0.21.1 which will contain the SWIG directory

In SWIG you'll find _ssl.i, which is the file to be patched. In the same directory create a file called _ssl.i.patch for example using the nano editor and paste the complete diff code listed below into it.

Next issue the patch _ssl.i _ssl.i.patch command to merge the patch into the code. (Afterwards you may remove the patch file if you want.)

Finally issue the commands:

python setup.py build

followed by:

python setup.py install

to install manually.

diff code:

--- SWIG/_ssl.i 2011-01-15 20:10:06.000000000 +0100+++ SWIG/_ssl.i 2012-06-17 17:39:05.292769292 +0200@@ -48,8 +48,10 @@ %rename(ssl_get_alert_desc_v) SSL_alert_desc_string_long; extern const char *SSL_alert_desc_string_long(int);+#ifndef OPENSSL_NO_SSL2 %rename(sslv2_method) SSLv2_method; extern SSL_METHOD *SSLv2_method(void);+#endif %rename(sslv3_method) SSLv3_method; extern SSL_METHOD *SSLv3_method(void); %rename(sslv23_method) SSLv23_method;


You can install this lib in your global environment and then just copy from your global site-packages to virtualenv.


M2Crypto 0.22.3 (the current version in pypi) fixes this problem, so the simplest solution is now simply:

pip install --upgrade M2Crypto

M2Crypto 0.22.3 has been released from martinpaljak's github repository, rather than from the original M2Crypto repository.