Microsoft Windows Python-3.6 PyCrypto installation

2019-01-13 06:12发布

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'

5条回答
Ridiculous、
2楼-- · 2019-01-13 06:26

I've succeeded install pycrypto 2.6.1 on python 3.6, Windows 10, Visual Studio 2017.

  1. open "x86_x64 Cross-Tools Command Prompt for VS 2017" with administrator privilege in start menu.
  2. set CL=-FI"%VCINSTALLDIR%Tools\MSVC\14.11.25503\include\stdint.h"
  3. pip install pycrypto

enter image description here

查看更多
姐就是有狂的资本
3楼-- · 2019-01-13 06:29

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楼-- · 2019-01-13 06:45

I've succeeded install pycrypo 2.6.1 on python 3.6 and windows 10.

  1. Set an environment variable like below. visual studio installed directory
  2. Open cmd.exe
  3. Activate virtualenv
  4. Download pycrypto 2.6.1 release from github and unzip it.
  5. set an environment variable for pycrypto set CL=/FI"%VCINSTALLDIR%\\INCLUDE\\stdint.h" %CL%
  6. Run setup command python setup.py install
  7. my result is here enter image description here

I would be glad if this could be help someone.

查看更多
孤傲高冷的网名
5楼-- · 2019-01-13 06:50

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:

  1. Open command prompt with admin privileges
  2. Run vsvars32.bat from your version of VC
  3. set CL=-FI"%VCINSTALLDIR%\INCLUDE\stdint.h"
  4. pip install pycrypto
查看更多
▲ chillily
6楼-- · 2019-01-13 06:50

Use PyCrytodome instead of pycryto. Pycryto is discontinued and is no longer actively supported.

查看更多
登录 后发表回答