问题
pip install pycrypto
works fine with python3.5.2 but fails wiht python3.6 with the following error:
inttypes.h(26): error C2061: syntax error: identifier \'intmax_t\'
回答1:
The file include\pyport.h in Python installation directory does not have #include < stdint.h > anymore. This leaves intmax_t undefined.
A workaround for Microsoft VC compiler is to force include stdint.h via OS environment variable CL:
- Open command prompt
- Setup VC environment by runing vcvars*.bat (choose file name depending on VC version and architecture)
- set CL=-FI"Full-Path\stdint.h" (use real value for Full-Path for the environment)
- pip install pycrypto
回答2:
I've succeeded install pycrypto 2.6.1 on python 3.6, Windows 10, Visual Studio 2017.
- open "x86_x64 Cross-Tools Command Prompt for VS 2017" with administrator privilege in start menu.
- set CL=-FI"%VCINSTALLDIR%Tools\MSVC\14.11.25503\include\stdint.h"
- pip install pycrypto
回答3:
Thanks to user1960422's answer.
PowerShell steps for pycrypto 2.6.1 (via simple-crypt) / Python 3.6 / Windows 10:
$env:VCINSTALLDIR="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC"
$env:CL="-FI`"$env:VCINSTALLDIR\INCLUDE\stdint.h`""
Successful simple-crypt / pycrypto install
I also needed to follow the answer in: https://stackoverflow.com/a/24822876/8751739 to fix a winrandom
module error.
回答4:
Use PyCryptodome instead of pycrypto. pycrypto is discontinued and is no longer actively supported. PyCryptodome exposes almost the same API as pycrypto (source).
回答5:
I've succeeded install pycrypo 2.6.1 on python 3.6 and windows 10.
- Set an environment variable like below.
- Open cmd.exe
- Activate virtualenv
- Download pycrypto 2.6.1 release from github and unzip it.
- set an environment variable for pycrypto
set CL=/FI"%VCINSTALLDIR%\\INCLUDE\\stdint.h" %CL%
- Run setup command
python setup.py install
- my result is here
I would be glad if this could be help someone.
来源:https://stackoverflow.com/questions/41843266/microsoft-windows-python-3-6-pycrypto-installation-error