Jak zainstalować PyCrypto w systemie Windows?

140

Czytałem wszystkie inne źródła Google i wątek SO, ale nic nie działało.

Python 2.7.3 32bitzainstalowany na Windows 7 64bit. Pobierz, wyodrębnij, a następnie spróbuj zainstalować PyCrypto w wyniku"Unable to find vcvarsall.bat".

Więc instaluję MinGW i dołączam to do linii instalacyjnej jako wybrany kompilator. Ale wtedy pojawia się błąd"RuntimeError: chmod error".

Jak na świecie mam to obejść? Próbowałem użyć pip, co daje ten sam wynik. Znalazłem wstępnie skompilowany plik binarny PyCrypto 2.3 i zainstalowałem go, ale nigdzie nie można go znaleźć w systemie (nie działa).

Jakieś pomysły?

Coldblackice
źródło
16
Jeśli chcesz go tylko zainstalować , po prostu pobierz binarny instalator
PyCrypto
12
To bardzo odważna rada, instalując binarny pakiet kryptograficzny z nieznanego serwera z zagranicy ...
Darren Ringer
Mimo że zdecydowałem się na wybraną odpowiedź, w końcu ustąpiłem i udało mi się samodzielnie zbudować pakiet (chociaż na pewno nie zawracałem sobie głowy weryfikacją żadnych podpisów na czymkolwiek, ponieważ naprawdę, czy kiedykolwiek jesteśmy naprawdę bezpieczni?) Paranoja i apatia na marginesie jednak poniższy link rozwiązał wszystkie moje najtrudniejsze problemy i przyspieszył proces: blog.victorjabur.com/2011/06/05/…
Darren Ringer
4
PyCrypto nie żyje. Autor na jakiś czas go porzucił. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Odpowiedzi:

184

Jeśli nie masz jeszcze zainstalowanego środowiska programistycznego C / C ++, które jest zgodne z plikami binarnymi programu Visual Studio dystrybuowanymi przez Python.org, powinieneś trzymać się tylko pakietów lub pakietów czystego języka Python, dla których dostępny jest plik binarny systemu Windows.

Na szczęście istnieją pliki binarne PyCrypto dostępne dla systemu Windows: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

AKTUALIZACJA:
Jak sugeruje @Udi w komentarzu poniżej, następująca komenda również instaluje się pycryptoi może być również używana w virtualenv:

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

Uwaga, aby wybrać z tej listy odpowiedni link do konfiguracji

Jeśli szukasz kompilacji dla Pythona 3.5, zobacz PyCrypto w Pythonie 3.5

Michael Dillon
źródło
28
możesz użyć easy_install, aby zainstalować pliki binarne z adresu URL:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi
Instalator pod adresem voidspace.org.uk/python/modules.shtml#pycrypto zadziałał dla mnie. Jedna wskazówka: jeśli nieumyślnie uruchomisz 64-bitowy instalator, ale masz 32-bitową wersję Pythona 2.7, instalator zakończy się niepowodzeniem i wyświetli alert „Wymagany język Python w wersji 2.7, którego nie znaleziono w rejestrze”.
Steve Saporta
1
Instalator gui nie powiódł się dla mnie. easy_install
powiodło się
@Udi dlaczego potrzebujesz easy_install dla exe?
Smit Johnth
@SmitJohnth easy_installzainstaluje pakiet w virtualenv (jeśli taki masz) i powstrzyma wszelkie interakcje graficzne (aby zautomatyzować lub po prostu zaoszczędzić czas).
Udi
32

Firma Microsoft niedawno wydała samodzielny, dedykowany kompilator Microsoft Visual C ++ dla języka Python 2.7 . Jeśli używasz Pythona 2.7, po prostu zainstaluj ten kompilator i Setuptools 6.0 lub nowszy, a większość pakietów z rozszerzeniami C będzie się teraz łatwo kompilować.

Jason R. Coombs
źródło
Wow, jakie interesujące. Ale nadal 84 Mb. I trochę za późno, zobacz moją odpowiedź na temat koła.
Smit Johnth
1
Nawet z kołem jest to zdecydowanie lepsza opcja niż walenie głową w VS 2008 i vcvarsall.bat w czasach, gdy chcesz zbudować coś ze źródła lub użyć modułu, który nie ma koła. MSVC dla Pythona może nie istnieć „na dłuższą metę”, ale teraz jest niezwykle przydatny.
GrandOpener
1
Wciąż najłatwiejsze rozwiązanie, jakie znalazłem; Zawsze nienawidziłem polegać na gotowych plikach binarnych z losowych (dla mnie) witryn.
Myk Willis,
28

Po latach Python w końcu zgodził się na binarną dysrybucję o nazwie, wheelktóra pozwala zainstalować nawet binarne rozszerzenia w systemie Windows bez konieczności posiadania kompilatora z prostym pip install packagename. Istnieje lista popularnych pakietów wraz z ich statusem. Pycrypto jeszcze nie istnieje, ale na przykład lxml, PySide i Scrapy.

Edytowane listopad 2015 : pip uninstall pycrypto& pip install pycryptodome. Jest to pycryptowidelec z nowymi funkcjami, wspierający koło. Zastępuje pycrypto, więc istniejący kod będzie nadal działał (patrz https://pycryptodome.readthedocs.org/en/latest/src/examples.html )

Smit Johnth
źródło
20

Dla VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Dla VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

Wtedy zadzwoń:

pip install pyCrypto 
Chandan
źródło
1
Dla VS2013: SET VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164
2
Chociaż może to działać w niektórych przypadkach, NIE jest to rozwiązanie. Musisz się upewnić, że wszelkie zależności są skompilowane tym samym kompilatorem, za pomocą którego skompilowano Python!
Daniel van Flymen
1
A co z VS2017 ?! Co mam ustawić ?!
mahshid.r
1
@ mahshid.r możesz sprawdzić zmienne środowiskowe dla VSxxxCOMNTOOLS i uzyskać nazwę zmiennej, a następnie ustawić zmienną VS90COMNTOOLS na wartość VSxxxCOMNTOOLS. W CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip install pyCrypto
Oriel Cochavi
18

Ogólnie

vcvarsall.batjest częścią kompilatora Visual C ++, potrzebujesz go do zainstalowania tego, co próbujesz zainstalować. Nawet nie próbuj radzić sobie z MingGW, jeśli twój Python został skompilowany z łańcuchem narzędzi programu Visual Studio i odwrotnie. Ważna jest nawet wersja łańcucha narzędzi Microsoft. Python skompilowany w VS 2008 nie będzie działał z rozszerzeniami skompilowanymi w VS 2010!

Musisz skompilować PyCrypto za pomocą tego samego kompilatora, z którym została skompilowana wersja Pythona. Google z komunikatem „Nie można znaleźć pliku vcvarsall.bat”, ponieważ to jest przyczyna Twojego problemu, jest to bardzo częsty problem podczas kompilowania rozszerzeń Pythona w systemie Windows.

Jest wiele informacji i wiele do przeczytania, aby to naprawić w dowolnym systemie, w którym się znajdujesz.

Uważaj na program Visual Studio 2010 lub nie korzystaj z Visual Studio 2008

O ile wiem, poniższe stwierdzenia są nadal prawdziwe. Zostało to opublikowane w powyższym linku w czerwcu 2010 r., Odnosząc się do próby zbudowania rozszerzeń za pomocą VS 2010 Express dla instalatorów Pythona dostępnych na python.org.

Uważaj, jeśli to zrobisz. Python 2.6 i 2.7 z python.org są tworzone za pomocą kompilatorów Visual Studio 2008. Będziesz musiał połączyć się z tym samym CRT (msvcr90.dll) co Python.

Visual Studio 2010 Express łączy się z niewłaściwą wersją CRT: msvcr100.dll.

Jeśli to zrobisz, musisz również ponownie skompilować język Python za pomocą programu Visual Studio 2010 Express. Nie można użyć standardowego instalatora binarnego Pythona dla systemu Windows. Nie można również używać żadnych rozszerzeń C / C ++ utworzonych za pomocą innego kompilatora niż Visual Studio 2010 (Express).

Opinia: jest to jeden z powodów, dla których porzuciłem Windowsa, aby wykonać wszystkie poważne prace programistyczne dla OSX!

Społeczność
źródło
2
Dzięki za wgląd. Ależ Boże, czy to naprawdę musi być tak nudne (frustracja skierowana do bogów pytonów, a nie do ciebie)? Właśnie próbowałem zainstalować inny pakiet (mcrypt), zarówno przez setup.py, jak i pip, oba kończyły się z błędami. Jak na świecie użytkownicy Windowsa instalują pakiety? Czy wszyscy muszą pobrać VS 2008 Express? (Mam VS 2010, który chyba nie spełnia swojego zadania).
Coldblackice,
1
nie, nie ma; tak nie jest w systemie OSX lub Linux. W Windows ty można zainstalować binaria dla rozkładów domyślny Python czy można je znaleźć , rzeczy kryptografii zwykle nie jest dostępna z powodu głupich ograniczeń eksportowych w USA. Ale czy naprawdę chcesz zainstalować biblioteki szyfrowania , których sam nie skompilowałeś? Jak bezpieczne jest to, mam na myśli, naprawdę skąd wiesz, że nie zostały one w jakiś sposób naruszone?
„Opinia: to jeden z powodów, dla których porzuciłem Windowsa, aby wykonać wszystkie poważne prace programistyczne dla OSX!” Tak ... Ściągnąłem Pythona, zanim miałem jakikolwiek kompilator C na moim urządzeniu ... Później dostałem Visual Studio 2013, aby trochę popracować nad Visual Basic ... Potem dostałem MinGW, aby móc używać GCC do kompilacji C w systemie Windows. Krótko mówiąc, chociaż część z tego może być moją winą, nie mam pojęcia, jakiego środowiska programistycznego chciałby użyć Python. Na szczęście mnóstwo pakietów Pythona jest dostępnych w plikach binarnych online, w tym pycrypto.
trevorKirkby
15

PyCryptodome to prawie kompatybilny fork PyCrypto z kołami Windows dostępnymi na pypi .

Możesz go zainstalować za pomocą prostego:

pip install pycryptodome

Witryna zawiera instrukcje tworzenia go ze źródeł za pomocą kompilatorów firmy Microsoft.

SquareRootOfTwentyThree
źródło
6

Udało mi pycryptosię skompilować za pomocą MinGW32i MSYS. Zakłada się, że masz piplub easy_installzainstalowałeś.

Oto jak to zrobiłem:

1) Zainstaluj MinGW32 . Na potrzeby tego wyjaśnienia załóżmy, że jest zainstalowany w C:\MinGW. Korzystając z instalatora, który polecam, wybierz kompilator C ++, z którym . MSYS powinien zainstalowaćMinGW

2) Dodaj c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbindo swojego %PATH%. Jeśli nie znasz, ten artykuł jest bardzo pomocny.

3) Z paska wyszukiwania uruchom, msysa terminal MSYS otworzy się. Dla tych, którzy są zaznajomieni Cygwin, działa to w podobny sposób.

4) Z poziomu terminala MSYS pip install pycryptopowinien działać bez błędów po tym.

darnold0714
źródło
Wygląda na to, że w Twoim rozwiązaniu brakuje kilku kroków. możesz chcieć nieco bardziej rozwinąć to rozwiązanie.
Rusty Weber
5

W systemie Windows 7:

Aby zainstalować Pycrypto w systemie Windows,

Spróbuj tego w wierszu polecenia,

Ustaw ścieżkę = C: \ Python27 \ Scripts (tj. Ścieżkę, w której znajduje się easy_install)

Następnie wykonaj następujące czynności,

easy_install pycrypto

W przypadku Ubuntu:

Spróbuj tego,

Pobierz Pycrypto z „ https://pypi.python.org/pypi/pycrypto

Następnie zmień bieżącą ścieżkę na ścieżkę pobierania za pomocą terminala, a użytkownik powinien być rootem:

Np .: root @ xyz-virtual-machine: ~ / pycrypto-2.6.1 #

Następnie wykonaj następujące czynności za pomocą terminala:

python setup.py install

U mnie to zadziałało. Nadzieja działa dla wszystkich ...

JayaPrakash
źródło
Uruchomiłem to w systemie Windows 7 i pierwszy raz pojawił się błąd: „błąd: skrypt instalacyjny zakończył działanie z błędem: wymagany jest program Microsoft Visual C ++ 9.0 (nie można znaleźć pliku vcvarsall.bat). Pobierz go z aka.ms/vcpython27 ”. Zainstalowałem to, uruchomiłem polecenie ponownie i tym razem zadziałało.
arie
5

Dla tych z Was, którzy szukają Pythona 3.4, znalazłem repozytorium git z instalatorem, który po prostu działa. Oto bezpośrednie linki do x64 i x32

user25064
źródło
4

Możliwe jest zbudowanie PyCrypto przy użyciu zestawów narzędzi Windows 7 SDK. Istnieją dwie wersje zestawu Windows 7 SDK. Oryginalna wersja (dla .Net 3.5) zawiera kompilatory wiersza polecenia VS 2008. Można zainstalować kompilatory 32- i 64-bitowe.

Pierwszym krokiem jest skompilowanie mpir w celu zapewnienia szybkiej arytmetyki. Udokumentowałem proces, którego używam w bibliotece gmpy . Szczegółowe instrukcje dotyczące budowania mpir przy użyciu kompilatora SDK można znaleźć pod adresem sdk_build

Kluczowe kroki do użycia kompilatorów SDK z wiersza poleceń DOS to:

1) Uruchom odpowiednio plik vcvars32.bat lub vcvars64.bat.

2) Po wyświetleniu monitu wykonaj polecenie „set MSSdk = 1”

3) Po wyświetleniu monitu wykonaj polecenie „set DISTUTILS_USE_SDK = 1”

Powinno to umożliwić pomyślne zainstalowanie pliku „python setup.py install” przy założeniu, że nie ma innych problemów z kodem C. Ale niewyraźnie pamiętam, że musiałem edytować kilka plików PyCrypto, aby włączyć mpir i znaleźć biblioteki mpir, ale w tej chwili nie mam uruchomionego systemu Windows. Minie kilka dni, zanim będę miał czas na odtworzenie kroków. Jeśli do tego czasu nie zgłosisz sukcesu, opublikuję kroki PyCrypto. Te kroki zakładają, że udało Ci się skompilować mpir.

Mam nadzieję, że to pomoże.

casevh
źródło
3

Więc instaluję MinGW i dołączam to do linii instalacyjnej jako wybrany kompilator. Ale potem pojawia się błąd „RuntimeError: chmod error”.

Ten błąd "RuntimeError: chmod error"występuje, ponieważ skrypt instalacyjny nie znalazł chmodpolecenia.

Jak na świecie mam to obejść?

Rozwiązanie

Wystarczy dodać pliki binarne MSYS do PATH i ponownie uruchomić skrypt instalacyjny .

(Uwaga: należy pamiętać, że MinGW jest dostarczane z MSYS, więc)

Przykład

Na przykład, jeśli jesteśmy w folderze 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

Opcjonalnie: może być konieczne wyczyszczenie przed ponownym uruchomieniem skryptu:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`
Bludzee
źródło
3
  1. Przejdź do Microsoft Visual C ++ Compiler for Python 2.7 i kontynuuj w oparciu o „Wymagania systemowe” (tak właśnie zrobiłem, aby połączyć poniższe kroki).

  2. Zainstaluj setuptools (aby Python mógł automatycznie wykryć ten pakiet kompilatora, wymagany jest setuptools 6.0 lub nowszy) : pip install setuptools lub pobierz źródło „Setuptools bootstrapping installer” z , zapisz ten plik gdzieś w systemie plików jako „ez_python.py” i zainstaluj za pomocą:python ez_python.py

  3. Zainstaluj koło (koło jest zalecane do tworzenia gotowych pakietów binarnych). Możesz go zainstalować za pomocą:pip install wheel

  4. Otwórz wiersz polecenia z podwyższonym poziomem uprawnień cmd.exe (z opcją „Uruchom jako administrator”), aby zainstalować „Kompilator Microsoft Visual C ++ dla języka Python 2.7” dla wszystkich użytkowników. Możesz to zrobić za pomocą następującego polecenia: msiexec / i C:\users\jozko\download\VCForPython27.msi ALLUSERS=1po prostu użyj własnej ścieżki do pliku:msiexec /i <path to MSI> ALLUSERS=1

  5. Teraz powinieneś być w stanie zainstalować pycrypto za pomocą: pip install pycrypto

damian1baran
źródło
3

Jeśli jesteś w systemie Windows i masz problem z instalacją Pycrypcto, po prostu użyj: pip install pycryptodome. Działa jak cud i znacznie ułatwi Ci życie niż próba wielu konfiguracji i poprawek.

Jan
źródło
2

Prawdopodobnie nie jest to optymalne rozwiązanie, ale możesz pobrać i zainstalować bezpłatny pakiet Visual C ++ Express z MS. To da ci kompilator C ++ potrzebny do skompilowania kodu PyCrypto.

sizzzzlerz
źródło
2

Moja odpowiedź może nie być związana ze wspomnianym tutaj problemem, ale miałem ten sam problem z Pythonem 3.4, w którym Crypto.Cipher nie był prawidłowym importem. Więc spróbowałem zainstalować PyCrypto i wpadłem w problemy.

Po kilku badaniach, które znalazłem w 3.4, powinieneś użyć pycryptodome .

Zainstalowałem pycryptodome za pomocą pycharm i byłem dobry.

z Crypto.Cipher import AES

Virendra Patel
źródło
1

Więc instaluję MinGW i dołączam to do linii instalacyjnej jako wybrany kompilator. Ale potem pojawia się błąd „RuntimeError: chmod error”.

Musisz zainstalować pakiet msys w MinGW

wprowadź opis obrazu tutaj

i dodaj następujące wpisy do zmiennej PATH env.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [Tutaj znajdziesz plik wykonywalny chmod]

Następnie uruchom polecenie z normalnego wiersza poleceń systemu Windows.

Aniket Thakur
źródło
0

Z dziwnych powodów prawnych pliki binarne nie są publikowane w normalny sposób. Voidspace jest zwykle najlepszym drugim źródłem. Ale od dłuższego czasu opiekun voidspace nie aktualizował się. Użyj zip z [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]

Zimmermann
źródło
2
Pobierz pliki binarne z dropbox.Nie wai.
Smit Johnth
Ściągnąłem plik binarny i przeskanowałem go za pomocą VirusTotal. Oczywiście oznacza to tylko, że nie ma wirusa, a nie że nie ma kryptograficznego backdoora. Na szczęście używam go tylko do programowania, ponieważ hostuję ten projekt na PythonAnywhere.
Range vs. Range
0

Krok 1: Zainstaluj program Visual C ++ 2010 Express stąd .

(Nie instaluj dodatku Service Pack 1 dla programu Microsoft Visual Studio 2010)

Krok 2: Usuń wszystkie pakiety redystrybucyjne Microsoft Visual C ++ 2010 z Panelu sterowania \ Programy i funkcje. Jeśli tego nie zrobisz, instalacja zakończy się niepowodzeniem i pojawi się niejasny błąd „Błąd krytyczny podczas instalacji”.

Krok 3: Zainstaluj wersję offline zestawu Windows SDK dla programu Visual Studio 2010 (v7.1) stąd . Jest to wymagane w przypadku rozszerzeń 64-bitowych. Windows ma wbudowane mocowanie dla ISO, takich jak Pismo.

Krok 4: Musisz zainstalować plik ISO z Pismo File Mount Audit Package. Pobierz Pismo stąd

Krok 5: Kliknij prawym przyciskiem myszy pobrany plik ISO i wybierz montowanie z Pismo. Następnie zainstaluj plik Setup \ SDKSetup.exe zamiast setup.exe.

Krok 6a: Utwórz plik vcvars64.bat w C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64, zmieniając katalog na C: \ Program Files (x86) \ Microsoft Visual Studio wersja \ VC \ on wiersz polecenia. Wpisz polecenie w wierszu polecenia: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Krok 6b: Aby skonfigurować to okno wiersza polecenia dla 64-bitowych kompilacji wiersza polecenia przeznaczonych dla platform x86, w wierszu polecenia wpisz: vcvarsall x86Kliknij tutaj, aby uzyskać więcej opcji.

Krok 7: W wierszu polecenia zainstaluj PyCrypto, wpisując: C:\Python3X>pip install -U your_wh_file

Asubiaro Toluwase Victor
źródło
0

Miałem Pycharm dla Pythona.

  1. Iść do pycharm -> file -> setting -> project interpreter

  2. Kliknij +

  3. Wyszukaj "pycrypto"i zainstaluj pakiet

Uwaga: jeśli nie masz zainstalowanego „Microsoft Visual C ++ Compiler for Python 2.7”, pojawi się monit o instalację. Po zakończeniu instalacji spróbuj wykonać powyższe kroki, powinno działać poprawnie.

RAKESH
źródło