Como instalo o PyCrypto no Windows?

139

Eu li todas as outras fontes do Google e SO threads, com nada funcionando.

Python 2.7.3 32bitinstalado em Windows 7 64bit. Baixe, extraia e tente instalar o PyCrypto resulta em"Unable to find vcvarsall.bat".

Por isso, instalo o MinGW e colo-o na linha de instalação como o compilador preferido. Mas então eu recebo o erro"RuntimeError: chmod error".

Como no mundo eu entorno isso? Eu tentei usar pip, que dá o mesmo resultado. Eu encontrei um binário PyCrypto 2.3 pré-instalado e instalei isso, mas não há nenhum lugar no sistema (não está funcionando).

Alguma ideia?

Coldblackice
fonte
16
Se você quiser apenas para instalá-lo , basta baixar o binário PyCrypto instalador
bobobobo
12
Isso é um conselho muito ousada, a instalação de um pacote de criptografia binário a partir de um servidor desconhecido do exterior ...
Darren Ringer
Mesmo tendo acabado com a resposta escolhida, acabei cedendo e conseguindo criar o pacote por mim mesmo (embora com certeza não tenha me dado ao trabalho de verificar quaisquer assinaturas de nada, porque, na verdade, estamos realmente seguros?) Paranoia e apatia à parte, no entanto, o link a seguir resolveu todos os meus problemas mais difíceis e agilizou
Darren Ringer
4
PyCrypto está morto. O autor desistiu por um tempo. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Respostas:

184

Se você ainda não possui um ambiente de desenvolvimento C / C ++ compatível com os binários do Visual Studio distribuídos pelo Python.org, instale apenas pacotes Python puros ou pacotes para os quais um binário do Windows esteja disponível.

Felizmente, existem binários PyCrypto disponíveis para Windows: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

ATUALIZAÇÃO:
Como o @Udi sugere no comentário abaixo, o seguinte comando também é instalado pycryptoe também pode ser usado virtualenv:

easy_install http://www.voidspace.org.uk/python/pycrypto-2.6.1/pycrypto-2.6.1.win32-py2.7.exe

Observe para escolher nesta lista o link relevante para sua configuração

Se você está procurando compilações para o Python 3.5, consulte PyCrypto no python 3.5

Michael Dillon
fonte
28
você pode usar o easy_install para instalar os binários a partir do URL:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi
O instalador em voidspace.org.uk/python/modules.shtml#pycrypto funcionou para mim. Uma dica: se você inadvertidamente executar o instalador de 64 bits, mas possuir uma versão de 32 bits do Python 2.7, o instalador falhará com o alerta "Necessário Python versão 2.7, que não foi encontrado no registro".
precisa
1
O instalador da GUI falhou para mim. easy_install sucedido
pscheit
@Udi Por que você precisa do easy_install para um exe?
amigos estão dizendo sobre sth johnth
O @SmitJohnth easy_installinstalará o pacote em um virtualenv (se você tiver um) e suprimirá toda a interação gráfica (para automatizar ou economizar tempo).
Udi
32

A Microsoft lançou recentemente um Compilador Microsoft Visual C ++ dedicado e independente para Python 2.7 . Se você estiver usando o Python 2.7, basta instalar o compilador e o Setuptools 6.0 ou posterior, e a maioria dos pacotes com extensões C agora será compilada rapidamente.

Jason R. Coombs
fonte
Nossa que interessante. Mas ainda 84 Mb. E um pouco tarde demais, veja minha resposta sobre roda.
amigos estão dizendo sobre sth johnth
1
Mesmo com o wheel, essa é de longe uma opção melhor do que bater com a cabeça no VS 2008 e no vcvarsall.bat nos momentos em que você deseja criar algo a partir da fonte ou usar um módulo que não possui um wheel. O MSVC para Python pode não estar presente no "longo prazo", mas é extremamente útil no momento.
GrandOpener 15/07/2015
1
Ainda é a solução mais fácil que encontrei; Eu sempre odiei ter que confiar em binários pré-criados de sites aleatórios (para mim).
Myk Willis 03/03
28

Depois de anos e anos , o python finalmente concordou com uma distribuição binária chamada wheelque permite instalar até extensões binárias no Windows sem ter um compilador simples pip install packagename. Há uma lista de pacotes populares com seu status. Pycrypto ainda não está lá, mas lxml, PySide e Scrapy, por exemplo.

Editado em novembro de 2015 : pip uninstall pycrypto& pip install pycryptodome. É um pycryptogarfo com novos recursos e suporta roda. Ele é substituído pycrypto, portanto, o código existente continuará funcionando (consulte https://pycryptodome.readthedocs.org/en/latest/src/examples.html )

Smit Johnth
fonte
20

Para o VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Para o VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

então ligue:

pip install pyCrypto 
Chandan
fonte
1
Para VS2013: SET VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164 1/15
2
Embora isso possa funcionar em certos casos, isso NÃO é uma solução. Você precisa garantir que quaisquer dependências sejam compiladas com o mesmo compilador que o Python foi compilado!
Daniel van Flymen
1
Que tal o VS2017 ?! O que devo definir ?!
Mahshid.r
1
@ mahshid.r, você pode verificar as variáveis ​​de ambiente para VSxxxCOMNTOOLS e obter o nome da variável, depois configurar a variável VS90COMNTOOLS para o valor VSxxxCOMNTOOLS. No CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip install pyCrypto
Oriel Cochavi
18

Em geral

vcvarsall.batfaz parte do compilador Visual C ++, é necessário instalar o que você está tentando instalar. Nem tente lidar com o MingGW se o seu Python foi compilado com a cadeia de ferramentas do Visual Studio e vice-versa. Até a versão da cadeia de ferramentas da Microsoft é importante. Python compilado com o VS 2008 não funcionará com extensões compiladas com o VS 2010!

Você precisa compilar o PyCrypto com o mesmo compilador com o qual a versão do Python foi compilada. Google para "Não foi possível encontrar o vcvarsall.bat" porque essa é a raiz do seu problema, é um problema muito comum na compilação de extensões Python no Windows.

Há muitas informações e muito a ler para corrigir isso em qualquer sistema em que você esteja com este link.

Cuidado usando o Visual Studio 2010 ou não usando o Visual Studio 2008

Tanto quanto sei, o seguinte ainda é verdadeiro. Isso foi publicado no link acima em junho de 2010, referindo-se à tentativa de criar extensões com o VS 2010 Express em relação aos instaladores do Python disponíveis no python.org.

Tenha cuidado se você fizer isso. O Python 2.6 e 2.7 do python.org são criados com os compiladores do Visual Studio 2008. Você precisará vincular com o mesmo CRT (msvcr90.dll) que o Python.

O Visual Studio 2010 Express está vinculado à versão CRT incorreta: msvcr100.dll.

Se você fizer isso, também deverá recriar o Python com o Visual Studio 2010 Express. Você não pode usar o instalador binário padrão do Python para Windows. Nem você pode usar extensões C / C ++ criadas com um compilador diferente do Visual Studio 2010 (Express).

Opinião: Essa é uma das razões pelas quais abandonei o Windows por todo o trabalho sério de desenvolvimento do OSX!

Comunidade
fonte
2
Obrigado pela compreensão. Mas, Deus do céu, isso realmente tem que ser tão tedioso (frustração direcionada aos deuses python, não a você)? Eu apenas tentei instalar outro pacote (mcrypt), através do setup.py e do pip, ambos saindo com erros. Como no mundo os usuários do Windows instalam pacotes? Todos eles precisam baixar o VS 2008 Express? (Eu tenho o VS 2010, que acho que não funciona).
22780 Coldblackice
1
não, não faz; não é assim no OSX ou Linux. No Windows, você pode instalar binários pré-compilados para as distribuições padrão do Python, se puder encontrá-las ; o material de criptografia geralmente não está disponível devido a restrições tolas de exportação nos EUA. Mas você realmente deseja instalar bibliotecas de criptografia que você não compilou a partir da fonte? Quão seguro é isso, quero dizer, realmente, como você sabe que eles não foram comprometidos de alguma maneira?
"Opinião: essa é uma das razões pelas quais abandonei o Windows por todo o trabalho sério de desenvolvimento para OSX!" Sim ... Eu baixei o python antes de ter qualquer tipo de compilador C no meu dispositivo ... Depois, eu instalei o visual studio 2013 para fazer um pouco com o visual basic ... Depois disso, obtive o MinGW para poder usar GCC para compilar C no Windows. Em resumo, embora parte disso possa ser minha culpa, não tenho idéia de qual python do ambiente de desenvolvimento estaria tentando usar. Felizmente, muitos pacotes python estão disponíveis em binários online, incluindo pycrypto.
usar o seguinte código
15

O PyCryptodome é um fork quase compatível do PyCrypto com rodas do Windows, disponível no pypi .

Você pode instalá-lo com um simples:

pip install pycryptodome

O site inclui instruções para construí-lo a partir de fontes também com os compiladores da Microsoft.

SquareRootOfTwentyThree
fonte
6

Eu consegui pycryptocompilar usando MinGW32e MSYS. Isso pressupõe que você possui pipou easy_installinstalou.

Aqui está como eu fiz isso:

1) Instale o MinGW32 . Para fins de explicação, vamos assumir que ela esteja instalada no C:\MinGW. Ao usar o instalador, que eu recomendo, selecione o compilador C ++ que o . MSYS deve instalar com oMinGW

2) Adicione c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbinao seu %PATH%. Se você não estiver familiarizado, este artigo é muito útil.

3) Na barra de pesquisa, execute msyse o terminal MSYS será aberto. Para aqueles familiarizados Cygwin, funciona de maneira semelhante.

4) De dentro do terminal MSYS pip install pycryptodeve ser executado sem erros após isso.

darnold0714
fonte
Parece que sua solução está faltando algumas etapas. convém elaborar um pouco mais essa solução.
Rusty Weber
5

Para o Windows 7:

Para instalar o Pycrypto no Windows,

Tente isso no prompt de comando,

Definir caminho = C: \ Python27 \ Scripts (ou seja, caminho onde o easy_install está localizado)

Em seguida, execute o seguinte,

easy_install pycrypto

Para o Ubuntu:

Tente isso,

Faça o download do Pycrypto em " https://pypi.python.org/pypi/pycrypto "

Em seguida, mude seu caminho atual para o caminho baixado usando seu terminal e o usuário deve ser root:

Por exemplo: root @ xyz-virtual-machine: ~ / pycrypto-2.6.1 #

Em seguida, execute o seguinte usando o terminal:

instalação do python setup.py

Funcionou para mim. A esperança funciona para todos ..

JayaPrakash
fonte
Eu executei isso no Windows 7 e na primeira vez que recebi um erro: "erro: o script de instalação foi encerrado com erro: É necessário o Microsoft Visual C ++ 9.0 (Não foi possível encontrar o vcvarsall.bat). Obtenha o arquivo aka.ms/vcpython27 ". Instalado, executei o comando novamente e desta vez funcionou.
Arie
5

Para aqueles que procuram python 3.4, encontrei um repositório git com um instalador que simplesmente funciona. Aqui estão os links diretos para x64 e x32

user25064
fonte
4

É possível criar o PyCrypto usando os kits de ferramentas do Windows 7 SDK. Existem duas versões do Windows 7 SDK. A versão original (para .Net 3.5) inclui os compiladores de linha de comando do VS 2008. Os compiladores de 32 e 64 bits podem ser instalados.

O primeiro passo é compilar o mpir para fornecer aritmética rápida. Eu documentei o processo que eu uso na biblioteca gmpy . Instruções detalhadas para construir o mpir usando o compilador SDK podem ser encontradas em sdk_build

As principais etapas para usar os compiladores SDK em um prompt do DOS são:

1) Execute vcvars32.bat ou vcvars64.bat conforme apropriado.

2) No prompt, execute "set MSSdk = 1"

3) No prompt, execute "set DISTUTILS_USE_SDK = 1"

Isso deve permitir que "python setup.py install" seja bem-sucedido, supondo que não haja outros problemas com o código C. Mas lembro-me vagamente de que tive que editar alguns arquivos PyCrypto para ativar o mpir e encontrar as bibliotecas mpir, mas não tenho meu sistema Windows no momento. Demorará alguns dias até que eu tenha tempo de recriar as etapas. Se você ainda não relatou sucesso, postarei as etapas do PyCrypto. As etapas assumirão que você foi capaz de compilar o mpir.

Eu espero que isso ajude.

Casevh
fonte
3

Por isso, instalo o MinGW e colo-o na linha de instalação como o compilador preferido. Mas então eu recebo o erro "RuntimeError: chmod error".

Este erro "RuntimeError: chmod error"ocorre porque o script de instalação não encontrou o chmodcomando.

Como no mundo eu entorno isso?

Solução

Você só precisa adicionar os binários MSYS ao PATH e executar novamente o script de instalação .

(Observação: observe que o MinGW vem com o MSYS, portanto)

Exemplo

Por exemplo, se estamos na pasta C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1>

C:\.....>set PATH=C:\MinGW\msys\1.0\bin;%PATH%
C:\.....>python setup.py install

Opcional: pode ser necessário limpar antes de executar novamente o script:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`
Bludzee
fonte
3
  1. Vá para " Microsoft Visual C ++ Compiler for Python 2.7 " e continue com base em "Requisitos do sistema" (foi o que fiz para juntar as etapas abaixo).

  2. Instalar setuptools (setuptools 6.0 ou posterior é necessário para Python para detectar automaticamente este pacote compilador) quer por: pip install setuptools ou baixar "Setuptools bootstrapping instalador" fonte de , salve este arquivo somwhere em seu filestystem como "ez_python.py" e instale com:python ez_python.py

  3. Instale a roda (a roda é recomendada para a produção de pacotes binários pré-construídos). Você pode instalá-lo com:pip install wheel

  4. Abra o prompt de comando elevado do Windows cmd.exe (com "Executar como administrador") para instalar o "Microsoft Visual C ++ Compiler for Python 2.7" para todos os usuários. Você pode usar o seguinte comando para fazer isso: msiexec / i C:\users\jozko\download\VCForPython27.msi ALLUSERS=1apenas use seu próprio caminho para o arquivo:msiexec /i <path to MSI> ALLUSERS=1

  5. Agora você deve conseguir instalar o pycrypto com: pip install pycrypto

damian1baran
fonte
3

Se você estiver no Windows e estiver com dificuldades para instalar o Pycrypcto, basta usar o: pip install pycryptodome. Funciona como um milagre e tornará sua vida muito mais fácil do que tentar fazer muitas configurações e ajustes.

John
fonte
2

Esta provavelmente não é a solução ideal, mas você pode baixar e instalar o pacote Visual C ++ Express gratuito da MS. Isso fornecerá o compilador C ++ necessário para compilar o código PyCrypto.

sizzzzlerz
fonte
2

Minha resposta pode não estar relacionada à menção do problema aqui, mas eu tive o mesmo problema com Python 3.4, onde o Crypto.Cipher não era uma importação válida. Então, eu tentei instalar o PyCrypto e tive problemas.

Depois de algumas pesquisas, descobri com o 3.4 que você deve usar pycryptodome .

Eu instalo o pycryptodome usando o pycharm e fui bom.

de Crypto.Cipher import AES

Virendra Patel
fonte
1

Por isso, instalo o MinGW e colo-o na linha de instalação como o compilador preferido. Mas então eu recebo o erro "RuntimeError: chmod error".

Você precisa instalar o pacote msys no MinGW

insira a descrição da imagem aqui

e adicione as seguintes entradas na sua variável env PATH.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [É aqui que você encontrará o executável chmod]

Em seguida, execute seu comando no prompt de comando normal do Windows.

Aniket Thakur
fonte
0

Devido a estranhas razões legais, os binários não são publicados da maneira normal. O espaço vazio é normalmente a melhor segunda fonte. Mas, já há algum tempo, o mantenedor do espaço vazio não foi atualizado. Use o zip em [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]

Zimmermann
fonte
2
Baixe binários do dropbox.No wai.
amigos estão dizendo sobre sth johnth
Eu baixei o binário e o digitalizei com o VirusTotal. Obviamente, isso significa apenas que não possui vírus, não que não possui um backdoor criptográfico. Felizmente, só o estou usando para desenvolvimento, porque estou hospedando este projeto no PythonAnywhere.
Intervalo vs. Intervalo
0

Etapa 1: Instale o Visual C ++ 2010 Express a partir daqui .

(Não instale o Microsoft Visual Studio 2010 Service Pack 1)

Etapa 2: Remova todos os pacotes redistribuíveis do Microsoft Visual C ++ 2010 do Painel de controle \ Programas e recursos. Se você não fizer isso, a instalação falhará com o erro obscuro "Erro fatal durante a instalação".

Etapa 3: instale a versão offline do Windows SDK para Visual Studio 2010 (v7.1) a partir daqui . Isso é necessário para extensões de 64 bits. O Windows tem montagem embutida para ISOs como o Pismo.

Etapa 4: você precisa instalar o arquivo ISO com o Pismo File Mount Audit Package. Faça o download do Pismo aqui

Etapa 5: Clique com o botão direito do mouse no arquivo ISO baixado e escolha montar com o Pismo. Posteriormente, instale o Setup \ SDKSetup.exe em vez de setup.exe.

Etapa 6a: Crie um arquivo vcvars64.bat em C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 alterando o diretório para C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio version \ VC \ on o prompt de comando. Digite comando no prompt de comando: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Etapa 6b: para configurar esta janela do prompt de comando para compilações de linha de comando de 64 bits que segmentam plataformas x86, no prompt de comando, digite: vcvarsall x86Clique aqui para obter mais opções.

Etapa 7: no prompt de comando, instale o PyCrypto digitando: C:\Python3X>pip install -U your_wh_file

Asubiaro Toluwase Victor
fonte
0

Eu tinha Pycharm para python.

  1. Vamos para pycharm -> file -> setting -> project interpreter

  2. Clique em +

  3. Procure "pycrypto"e instale o pacote

Nota: Se você não tiver o "Microsoft Visual C ++ Compiler for Python 2.7" instalado, ele solicitará a instalação. Depois que a instalação terminar, tente as etapas acima.

RAKESH
fonte