Install m2crypto failed in Windows 10 with Python 3.7
Closed this issue ยท 6 comments
Try to install the requirements:
pip install -r requirements.txt
Get the following error:
...
_m2crypto_wrap.c
SWIG/_m2crypto_wrap.c(3561): fatal error C1083: Cannot open include file: 'openssl/err.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.24.28314\\bin\\HostX86\\x64\\cl.exe' failed with exit status
2
...
```
Any hint?
I was able to get m2crypto installed and working in Python 2.7 on Windows 10 by first running pip install wheel
. I have not gotten it working on Python 3.8.1 so far.
Some builds for m2crypto
for specific versions of Python are available from their CI: https://ci.appveyor.com/project/m2crypto/m2crypto/history. Try selecting a version, selecting a job that matches your Python version, then going to the "Artifacts" tab and downloading an installer. To install a .whl
file, see step 11 of my build tutorial below.
I have also attached the m2crypto
module that I have built on Windows 10 x64, Python 3.8.1. It should work on any x64-based version of Windows with any version of Python 3.8.X. M2Crypto-0.35.2.win-amd64-py3.8.zip
However, if you are unable to find a build that matches your Python version and system type and architecture, you may need to manually build m2crypto
. I adapted the build steps from their CI build scripts: https://gitlab.com/m2crypto/m2crypto/blob/master/appveyor.yml. I built the module by doing the following:
- Install the latest
Build Tools for Visual Studio 2019
. See https://visualstudio.microsoft.com/downloads/ under "All Downloads" -> "Tools for Visual Studio 2019". This direct link was active as of this writing: https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16 - In the installer, select "C++ Build Tools", install, and reboot if necessary.
- Install the latest full (not
Light
)OpenSSL
for your architecture (Win64
/Win32
). Current version as of this writing is1.1.1d
. Make note of the directory to which you installOpenSSL
. https://slproweb.com/products/Win32OpenSSL.html - In
PowerShell
, install theChocolatey
package manager. I used this command from their website:Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- Install
swig
withChocolatey
(inPowerShell
).choco install -r -y swig
- Install the
pywin32
dependency. Runpip install pywin32
. If you have problems, try first runningpip install wheel
. To getpip
to target a specific Python installation, try launching it usingpy -[version] -m pip install [module]
. Note: you may need to use an elevated (administrator)PowerShell
to install Python modules. - Get the latest
m2crypto
code. If you havegit
installed, rungit clone https://gitlab.com/m2crypto/m2crypto
. Otherwise, download and extract the code from GitLab: https://gitlab.com/m2crypto/m2crypto/-/archive/master/m2crypto-master.zip - Use
cd
to change into the directorym2crypto
was cloned/extracted to. - Assuming
python
launches your desired Python interpreter version, runpython setup.py build --openssl="C:\Program Files\OpenSSL-Win64" --bundledlls
, replacingC:\Program Files\OpenSSL-Win64
with the directory to which you installedOpenSSL
. (On some systems you can use thepy
launcher to specify a Python version to use, runpy -h
for more information.) - Generate the installable files.
python.exe setup.py bdist_wheel bdist_wininst bdist_msi
. - Install the module.
cd
into thedist
directory and runpip install M2Crypto-0.35.2-cp38-cp38-win_amd64.whl
, replacing the filename with the generated.whl
file. If you have problems, try first runningpip install wheel
. To getpip
to target a specific Python installation, try launching it usingpy -[version] -m pip install [module]
. Alternatively, you can run the generated.exe
or.msi
installer. Note: you may need to use an elevated (administrator)PowerShell
to install Python modules.
Follow the upper instruction, it works like a charm! Thank you tech234a!
Hi, I've created this repo with pre-compiled wheels so you don't have to do all the steps, just download the .whl
and install it!
I was able to get m2crypto installed and working in Python 2.7 on Windows 10 by first running
pip install wheel
. I have not gotten it working on Python 3.8.1 so far.
Thankyou !
I failed at step 9 of [tech234a] instructions, always having the same error:
...
running build
running build_py
running egg_info
writing src\M2Crypto.egg-info\PKG-INFO
writing dependency_links to src\M2Crypto.egg-info\dependency_links.txt
writing top-level names to src\M2Crypto.egg-info\top_level.txt
error: Could not find module 'libssl.so' (or one of its dependencies). Try using the full path with constructor syntax.
...
any hint?