Как установить PyCrypto в Windows?


142

Я читал все другие источники Google и SO-поток, но ничего не работало.

Python 2.7.3 32bitустановлен на Windows 7 64bit. Загрузка, извлечение и попытка установки PyCrypto приводит к"Unable to find vcvarsall.bat".

Поэтому я устанавливаю MinGW и добавляю его в строке установки в качестве предпочтительного компилятора. Но потом я получаю ошибку"RuntimeError: chmod error".

Как мне это обойти? Я пробовал использовать pip, что дает тот же результат. Я нашел готовый двоичный файл PyCrypto 2.3 и установил его, но его нигде нет в системе (не работает).

Любые идеи?



16
Если вы просто хотите установить его , просто скачайте бинарный установщик
PyCrypto

12
Это очень смелый совет - установить пакет бинарной криптографии с неизвестного сервера из-за границы ...
Даррен Рингер,

Несмотря на то, что в конечном итоге я выбрал выбранный ответ, я в конце концов уступил и сумел собрать пакет самостоятельно (хотя, конечно же, я не потрудился проверить какие-либо подписи на чем-либо, потому что действительно ли мы когда-либо действительно защищены?) Паранойя и апатия в стороне, однако, следующая ссылка решила все мои самые сложные проблемы и упростила
Даррен Рингер

4
PyCrypto мертв. Автор на время бросил. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Ответы:


186

Если у вас еще не установлена ​​среда разработки C / C ++, совместимая с двоичными файлами Visual Studio, распространяемыми Python.org, вам следует придерживаться установки только пакетов или пакетов чистого Python, для которых доступен двоичный файл Windows.

К счастью, для Windows доступны двоичные файлы PyCrypto: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

ОБНОВЛЕНИЕ:
как @Udi предлагает в комментарии ниже, следующая команда также устанавливается pycryptoи может использоваться в virtualenv:

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

Уведомление о выборе соответствующей ссылки для вашей настройки из этого списка

Если вы ищете сборки для Python 3.5, см. PyCrypto на python 3.5.


28
вы можете использовать easy_install для установки двоичных файлов с URL-адреса: easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi

У меня работал установщик на voidspace.org.uk/python/modules.shtml#pycrypto . Один совет: если вы случайно запустите 64-разрядную программу установки, но у вас установлена ​​32-разрядная версия Python 2.7, программа установки завершится ошибкой с предупреждением «Требуется версия Python 2.7, которая не была найдена в реестре».
Стив Сапорта

1
Установщик gui не удался для меня. easy_install успешно завершен
pscheit 08

@Udi зачем вам easy_install для exe?
Smit Johnth

@SmitJohnth easy_installустановит пакет в virtualenv (если он у вас есть) и подавит все графические взаимодействия (для автоматизации или просто для экономии времени).
Уди

33

Недавно Microsoft выпустила отдельный специальный компилятор Microsoft Visual C ++ для Python 2.7 . Если вы используете Python 2.7, просто установите этот компилятор и Setuptools 6.0 или новее, и большинство пакетов с расширениями C теперь легко скомпилируются.


Ого, как интересно. Но все равно 84 Мб. И уже поздно смотреть мой ответ про колесо.
Smit Johnth

1
Даже с колесом это, безусловно, лучший вариант, чем биться головой о VS 2008 и vcvarsall.bat в тех случаях, когда вы хотите создать что-то из исходных текстов или использовать модуль, у которого нет колеса. MSVC для Python, возможно, не появится в «долгосрочной перспективе», но сейчас он чрезвычайно полезен.
GrandOpener

1
Тем не менее, самое простое решение, которое я нашел; Я всегда ненавидел полагаться на заранее созданные двоичные файлы со случайных (для меня) веб-сайтов.
Myk Willis

29

Спустя годы и годы python, наконец, согласился на двоичный дистрибутив, называемый, wheelкоторый позволяет устанавливать даже двоичные расширения в Windows, не имея компилятора с simple pip install packagename. Есть список популярных пакетов с указанием их статуса. Pycrypto еще не существует, но, например, lxml, PySide и Scrapy.

Отредактировано в ноябре 2015 г . : pip uninstall pycrypto& pip install pycryptodome. Это pycryptoвилка с новыми функциями и поддержкой колеса. Он заменяет pycrypto, поэтому существующий код будет продолжать работать (см. Https://pycryptodome.readthedocs.org/en/latest/src/examples.html )


20

Для VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Для VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

затем позвоните:

pip install pyCrypto 

1
Для VS2013: НАБОР VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164, 01

2
Хотя в некоторых случаях это может сработать, это НЕ решение. Вы должны убедиться, что все зависимости скомпилированы тем же компилятором, с которым был скомпилирован Python!
Daniel van Flymen

1
Как насчет VS2017 ?! Что мне ставить ?!
mahshid.r 09

1
@ mahshid.r вы можете проверить переменные среды для VSxxxCOMNTOOLS и получить имя переменной, а затем установить для переменной VS90COMNTOOLS значение VSxxxCOMNTOOLS. В CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip install pyCrypto
Ориэль Кочави

18

В общем

vcvarsall.batявляется частью компилятора Visual C ++, он необходим для установки того, что вы пытаетесь установить. Даже не пытайтесь иметь дело с MingGW, если ваш Python был скомпилирован с помощью набора инструментов Visual Studio и наоборот. Даже версия цепочки инструментов Microsoft важна. Python, скомпилированный с VS 2008, не будет работать с расширениями, скомпилированными с VS 2010!

Вам необходимо скомпилировать PyCrypto с тем же компилятором, с которым была скомпилирована версия Python. Google для «Невозможно найти vcvarsall.bat», потому что это корень вашей проблемы, это очень распространенная проблема при компиляции расширений Python в Windows.

Есть много информации и много того, что нужно прочитать, чтобы получить правильное представление о любой системе, в которой вы используете эту ссылку.

Остерегайтесь использовать Visual Studio 2010 или не использовать Visual Studio 2008

Насколько я знаю, верно следующее. Это было опубликовано по ссылке выше в июне 2010 года, когда речь шла о попытке создания расширений с VS 2010 Express с помощью установщиков Python, доступных на python.org.

Будьте осторожны, если сделаете это. Python 2.6 и 2.7 с python.org созданы с помощью компиляторов Visual Studio 2008. Вам нужно будет связать с той же CRT (msvcr90.dll), что и Python.

Visual Studio 2010 Express ссылается на неправильную версию CRT: msvcr100.dll.

Если вы это сделаете, вам также придется пересобрать Python с помощью Visual Studio 2010 Express. Вы не можете использовать стандартный двоичный установщик Python для Windows. Вы также не можете использовать какие-либо расширения C / C ++, созданные с помощью другого компилятора, кроме Visual Studio 2010 (Express).

Мнение: это одна из причин, по которой я отказался от Windows из-за серьезной работы по разработке OSX!


2
Спасибо за понимание. Но боже мой, неужели это должно быть так утомительно (разочарование направлено на богов-питонов, а не на себя)? Я просто попытался установить другой пакет (mcrypt) через setup.py и pip, оба выходили с ошибками. Как вообще пользователи Windows устанавливают пакеты? Все ли они должны скачивать VS 2008 Express? (У меня VS 2010, который, я думаю, не работает).
Coldblackice

1
нет, это не так; это не так в OSX или Linux. В Windows вы можете установить предварительно скомпилированные двоичные файлы для дистрибутивов Python по умолчанию, если вы можете их найти , средства криптографии обычно недоступны из-за глупых ограничений экспорта в США. Но вы действительно хотите установить библиотеки шифрования, которые вы сами не скомпилировали из исходников ???? Насколько это безопасно, я имею в виду на самом деле, откуда вы знаете, что они каким-то образом не были скомпрометированы?

«Мнение: это одна из причин, по которой я отказался от Windows из-за серьезной работы по разработке OSX!» Да ... Я загрузил python до того, как у меня был какой-либо компилятор C на моем устройстве ... Затем я получил Visual Studio 2013, чтобы немного поработать с Visual Basic ... Затем после этого я получил MinGW, чтобы я мог использовать GCC для компиляции C в Windows. Короче говоря, хотя частично это может быть моей ошибкой, я понятия не имею, какую среду разработки пытается использовать python. К счастью, множество пакетов Python доступно в виде двоичных файлов в Интернете, включая pycrypto.
TrevorKirkby 05

16

PyCryptodome - это почти совместимая вилка PyCrypto с колесами Windows, доступными на pypi. .

Вы можете установить его с помощью простого:

pip install pycryptodome

На веб-сайте есть инструкции по его сборке из исходных текстов с помощью компиляторов Microsoft.


6

Мне удалось pycryptoскомпилировать, используя MinGW32и MSYS. Это предполагает, что у вас есть pipилиeasy_install установлен.

Вот как я это сделал:

1) Установите MinGW32 . Для объяснения предположим, что он установлен в C:\MinGW. При использовании установщика, который я рекомендую, выберите компилятор C ++. MSYS должен установить сMinGW

2) Добавьте c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbinв свой %PATH%. Если вы не знакомы, эта статья очень вам поможет.

3) В строке поиска запустите, msysи откроется терминал MSYS. Для тех, кто знаком сCygwin , он работает аналогичным образом.

4) pip install pycryptoПосле этого терминал MSYS должен работать без ошибок.


Похоже, в вашем решении не хватает некоторых шагов. возможно, вы захотите подробнее рассказать об этом решении.
Расти Вебер

5

Для Windows 7:

Чтобы установить Pycrypto в Windows,

Попробуйте это в командной строке,

Задайте путь = C: \ Python27 \ Scripts (т.е. путь, по которому находится easy_install)

Затем выполните следующее:

easy_install pycrypto

Для Ubuntu:

Попробуй это,

Загрузите Pycrypto с https://pypi.python.org/pypi/pycrypto »

Затем измените текущий путь на загруженный путь с помощью вашего терминала, и пользователь должен быть root:

Например: root @ xyz-virtual-machine: ~ / pycrypto-2.6.1 #

Затем выполните с помощью терминала следующее:

установка python setup.py

У меня это сработало. Надежда работает на всех ..


Я запустил это в Windows 7 и в первый раз получил сообщение об ошибке: «Ошибка: сценарий установки завершился с ошибкой: требуется Microsoft Visual C ++ 9.0 (невозможно найти vcvarsall.bat). Получите его с aka.ms/vcpython27 ». Установил это, снова запустил команду, и на этот раз она сработала.
arie


4

Можно собрать PyCrypto с помощью наборов инструментов Windows 7 SDK. Существует две версии Windows 7 SDK. Исходная версия (для .Net 3.5) включает компиляторы командной строки VS 2008. Могут быть установлены как 32-, так и 64-битные компиляторы.

Первым шагом является компиляция mpir для обеспечения быстрой арифметики. Я задокументировал процесс, который использую, в библиотеке gmpy . Подробные инструкции по сборке mpir с использованием компилятора SDK можно найти на sdk_build

Ключевые шаги для использования компиляторов SDK из командной строки DOS:

1) Запустите vcvars32.bat или vcvars64.bat в зависимости от ситуации.

2) В командной строке выполните «set MSSdk = 1».

3) В командной строке выполните "set DISTUTILS_USE_SDK = 1"

Это должно позволить выполнить "python setup.py install" при условии, что нет других проблем с кодом C. Но я смутно помню, что мне пришлось отредактировать пару файлов PyCrypto, чтобы включить mpir и найти библиотеки mpir, но на данный момент у меня нет системы Windows. Пройдет пара дней, прежде чем у меня будет время воссоздать шаги. Если к тому времени вы не сообщили об успехе, я опубликую шаги PyCrypto. Предполагается, что вы смогли скомпилировать mpir.

Надеюсь, это поможет.



3

Поэтому я устанавливаю MinGW и добавляю его в строке установки в качестве предпочтительного компилятора. Но затем я получаю сообщение об ошибке «RuntimeError: chmod error».

Эта ошибка "RuntimeError: chmod error"возникает из-за того, что сценарий установки не нашел chmodкоманду.

Как мне это обойти?

Решение

Вам нужно только добавить двоичные файлы MSYS в PATH и повторно запустить сценарий установки. .

(NB: обратите внимание, что MinGW поставляется с MSYS, поэтому)

пример

Например, если мы находимся в папке 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

Необязательно: вам может потребоваться очистить перед повторным запуском скрипта:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`

3
  1. Перейти к « ++ Compiler Microsoft Visual C для Python 2.7 » и продолжить на основе «Системные требования» (это то , что я сделал , чтобы положить ниже шаги вместе).

  2. Установка Setuptools (Setuptools 6,0 или более поздней версии требуется для Python , чтобы автоматически обнаружить этот пакет компилятора) , либо: pip install setuptools или скачать «Setuptools самонастройки установки» источник из , сохраните этот файл Somwhere на вашем filestystem как «ez_python.py» и установить с:python ez_python.py

  3. Установите wheel (wheel рекомендуется для создания готовых бинарных пакетов). Вы можете установить его с помощью:pip install wheel

  4. Откройте командную строку Windows с повышенными привилегиями cmd.exe (с «Запуском от имени администратора»), чтобы установить «Microsoft Visual C ++ Compiler for Python 2.7» для всех пользователей. Для этого вы можете использовать следующую команду: msiexec / i C:\users\jozko\download\VCForPython27.msi ALLUSERS=1просто используйте свой собственный путь к файлу:msiexec /i <path to MSI> ALLUSERS=1

  5. Теперь вы сможете установить pycrypto с помощью: pip install pycrypto


3

Если вы работаете в Windows и не можете установить Pycrypcto, просто используйте команду: pip install pycryptodome. Это работает как чудо, и это сделает вашу жизнь намного проще, чем попытки сделать множество настроек и настроек.


2

Это, вероятно, не оптимальное решение, но вы можете загрузить и установить бесплатный пакет Visual C ++ Express от MS. Это даст вам компилятор C ++, необходимый для компиляции кода PyCrypto.


2

Мой ответ может быть не связан с упомянутой здесь проблемой, но у меня была такая же проблема с Python 3.4. такая где Crypto.Cipher не был действительным импортом. Итак, я попытался установить PyCrypto и столкнулся с проблемами.

После некоторых исследований, которые я обнаружил в версии 3.4, вам следует использовать пикриптодом. .

Я устанавливаю пикриптодом с помощью pycharm, и у меня все получилось.

из Crypto.Cipher импорт AES


1

Поэтому я устанавливаю MinGW и добавляю его в строке установки в качестве предпочтительного компилятора. Но затем я получаю сообщение об ошибке «RuntimeError: chmod error».

Вам необходимо установить пакет msys под MinGW

введите описание изображения здесь

и добавьте следующие записи в переменную окружения PATH.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [Здесь вы найдете исполняемый файл chmod]

Затем запустите вашу команду из обычной командной строки Windows.


0

По странным юридическим причинам двоичные файлы не публикуются обычным способом. Voidspace - обычно лучший второй источник. Но с некоторого времени сопровождающий voidspace не обновлялся. Используйте zip-архив с сайта [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0].


2
Скачать бинарники из дропбокса. Нет вай.
Smit Johnth

Я загрузил двоичный файл и просканировал его с помощью VirusTotal. Конечно, это означает только то, что у него нет вируса, а не то, что у него нет криптографического бэкдора. К счастью, я использую его только для разработки, потому что размещаю этот проект на PythonAnywhere.
Range vs. Range

0

Шаг 1. Установите Visual C ++ 2010 Express отсюда .

(Не устанавливайте Microsoft Visual Studio 2010 с пакетом обновления 1)

Шаг 2. Удалите все распространяемые пакеты Microsoft Visual C ++ 2010 из Панели управления \ Программы и компоненты. Если вы этого не сделаете, то установка завершится с ошибкой «Неустранимая ошибка во время установки».

Шаг 3. Установите автономную версию Windows SDK для Visual Studio 2010 (v7.1) отсюда. . Это необходимо для 64-битных расширений. Windows имеет встроенную установку для ISO-образов, таких как Pismo.

Шаг 4: Вам необходимо установить ISO-файл с пакетом аудита монтирования файлов Pismo. Загрузите Pismo отсюда

Шаг 5: Щелкните загруженный файл ISO правой кнопкой мыши и выберите «Подключить с помощью Pismo». После этого установите Setup \ SDKSetup.exe вместо setup.exe.

Шаг 6a: Создайте файл vcvars64.bat в C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64, изменив каталог на C: \ Program Files (x86) \ Microsoft Visual Studio version \ VC \ on командная строка. Введите команду в командной строке: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Шаг 6b: Чтобы настроить это окно командной строки для 64-разрядных сборок командной строки, предназначенных для платформ x86, в командной строке введите: vcvarsall x86Щелкните здесь, чтобы просмотреть дополнительные параметры.

Шаг 7: В командной строке установите PyCrypto, набрав: C:\Python3X>pip install -U your_wh_file


0

У меня был Pycharm для python.

  1. Перейти к pycharm -> file -> setting -> project interpreter

  2. Нажмите на +

  3. Найдите "pycrypto"и установите пакет

Примечание. Если у вас не установлен «Microsoft Visual C ++ Compiler for Python 2.7», вам будет предложено установить его. После завершения установки попробуйте выполнить указанные выше действия, все должно работать нормально.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.