Làm cách nào để cài đặt PyCrypto trên Windows?


139

Tôi đã đọc tất cả các nguồn google và luồng SO khác, không có gì hoạt động.

Python 2.7.3 32bitcài đặt trên Windows 7 64bit. Tải xuống, giải nén và sau đó thử cài đặt kết quả PyCrypto trong"Unable to find vcvarsall.bat".

Vì vậy, tôi cài đặt MinGW và giải quyết nó trên dòng cài đặt làm trình biên dịch lựa chọn. Nhưng sau đó tôi nhận được lỗi"RuntimeError: chmod error".

Làm thế nào trên thế giới tôi có được xung quanh này? Tôi đã thử sử dụng pip, cho kết quả tương tự. Tôi đã tìm thấy một nhị phân PyCrypto 2.3 dựng sẵn và cài đặt nó, nhưng nó không tìm thấy ở đâu trên hệ thống (không hoạt động).

Có ý kiến ​​gì không?



16
Nếu bạn chỉ muốn cài đặt nó , chỉ cần tải xuống trình cài đặt PyCrypto nhị phân
bobobobo

12
Đó là lời khuyên rất táo bạo, cài đặt gói mật mã nhị phân từ một máy chủ không xác định từ nước ngoài ...
Darren Ringer

Mặc dù cuối cùng tôi đã đi đến câu trả lời đã chọn, cuối cùng tôi cũng đã tự tin và tự mình xây dựng gói (mặc dù chắc chắn tôi không bận tâm xác minh bất kỳ chữ ký nào trên bất cứ điều gì, bởi vì thực sự, chúng ta có thực sự an toàn không?) tuy nhiên, bên cạnh đó, liên kết sau đã giải quyết tất cả các vấn đề khó khăn nhất của tôi và khiến quá trình này nhanh chóng: blog.victorjabur.com/2011/06/05/ chủ
Darren Ringer

4
PyCrypto đã chết. Tác giả đã bỏ nó một thời gian. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Câu trả lời:


184

Nếu bạn chưa cài đặt môi trường phát triển C / C ++ tương thích với các nhị phân Visual Studio được phân phối bởi Python.org, thì bạn chỉ nên cài đặt các gói hoặc gói Python thuần mà có sẵn tệp nhị phân Windows.

May mắn thay, có các nhị phân PyCrypto có sẵn cho Windows: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

CẬP NHẬT:
Như @Udi gợi ý trong bình luận bên dưới, lệnh sau cũng cài đặt pycryptovà cũng có thể được sử dụng virtualenv:

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

Lưu ý chọn liên kết có liên quan cho thiết lập của bạn từ danh sách này

Nếu bạn đang tìm kiếm bản dựng cho Python 3.5, hãy xem PyCrypto trên python 3.5


28
bạn có thể sử dụng easy_install để cài đặt các tệp nhị phân từ url:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi

Trình cài đặt tại voidspace.org.uk/python/modules.shtml#pycrypto đã làm việc cho tôi. Một mẹo: Nếu bạn vô tình chạy trình cài đặt 64 bit nhưng có phiên bản Python 2.7 32 bit, trình cài đặt sẽ thất bại với cảnh báo "Yêu cầu phiên bản Python 2.7, không tìm thấy trong sổ đăng ký."
Steve Saporta

1
cài đặt gui thất bại cho tôi. easy_install thành công
pscheit

@Udi tại sao bạn cần easy_install cho exe?
Smit Johnth

@SmitJohnth easy_installsẽ cài đặt gói trong virtualenv (nếu bạn có) và sẽ triệt tiêu mọi tương tác đồ họa (để tự động hóa hoặc chỉ tiết kiệm thời gian).
Udi

32

Microsoft gần đây đã phát hành một Trình biên dịch Microsoft Visual C ++ độc lập, dành riêng cho Python 2.7 . Nếu bạn đang sử dụng Python 2.7, chỉ cần cài đặt trình biên dịch đó và Setuptools 6.0 trở lên và hầu hết các gói có phần mở rộng C sẽ dễ dàng biên dịch.


Wow, thật thú vị. Nhưng vẫn còn 84 Mb. Và một chút quá muộn, xem câu trả lời của tôi về bánh xe.
Smit Johnth

1
Ngay cả với bánh xe, đây vẫn là một lựa chọn tốt hơn so với đập đầu vào VS 2008 và vcvarsall.bat cho những lúc bạn muốn xây dựng một thứ gì đó từ nguồn hoặc sử dụng mô-đun không có bánh xe. MSVC cho Python có thể không xuất hiện trong "dài hạn", nhưng nó cực kỳ hữu ích ngay bây giờ.
GrandOpener

1
Vẫn là giải pháp đơn giản nhất mà tôi tìm thấy; Tôi luôn ghét phải dựa vào các tệp nhị phân dựng sẵn từ các trang web ngẫu nhiên (với tôi).
Myk Willis

28

Sau nhiều năm , python cuối cùng đã đồng ý cho một phân phối nhị phân được gọi là wheelcho phép cài đặt ngay cả các phần mở rộng nhị phân trên Windows mà không cần một trình biên dịch đơn giản pip install packagename. Có một danh sách các gói phổ biến với trạng thái của họ. Pycrypto chưa có, nhưng lxml, PySide và Scrapy chẳng hạn.

Chỉnh sửa tháng 11 năm 2015 : pip uninstall pycrypto& pip install pycryptodome. Nó là một pycryptongã ba với các tính năng mới và nó hỗ trợ bánh xe. Nó thay thế pycrypto, vì vậy mã hiện tại sẽ tiếp tục hoạt động (xem https://pycryptodome.readthedocs.org/en/latest/src/examples.html )


20

Đối với VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Đối với VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

sau đó gọi:

pip install pyCrypto 

1
Dành cho VS2013: SET VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164

2
Trong khi điều này có thể hoạt động trong một số trường hợp nhất định, đây KHÔNG phải là một giải pháp. Bạn cần đảm bảo rằng mọi phụ thuộc đều được biên dịch với cùng trình biên dịch như Python đã được biên dịch!
Daniel van Flymen

1
Còn VS2017 thì sao?! Tôi nên đặt cái gì?!
mahshid.r

1
@ mahshid.r bạn có thể kiểm tra các biến môi trường cho VSxxxCOMNTOOLS và lấy tên biến, sau đó đặt biến VS90COMNTOOLS thành giá trị VSxxxCOMNTOOLS. Trong CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip cài đặt pyCrypto
Oriel Cochavi

18

Nói chung

vcvarsall.batlà một phần của trình biên dịch Visual C ++, bạn cần cài đặt những gì bạn đang cố gắng cài đặt. Thậm chí đừng cố gắng đối phó với MingGW nếu Python của bạn được biên dịch bằng chuỗi công cụ Visual Studio và ngược lại. Ngay cả phiên bản của chuỗi công cụ Microsoft cũng quan trọng. Python được biên dịch với VS 2008 sẽ không hoạt động với các tiện ích mở rộng được biên dịch với VS 2010!

Bạn phải biên dịch PyCrypto với cùng trình biên dịch mà phiên bản Python đã được biên dịch. Google cho "Không thể tìm thấy vcvarsall.bat" vì đó là gốc rễ của vấn đề của bạn, đây là một vấn đề rất phổ biến với việc biên dịch các tiện ích mở rộng Python trên Windows.

Có rất nhiều thông tin và rất nhiều thứ để đọc để có được điều này ngay trên bất kỳ hệ thống nào bạn đang sử dụng với liên kết này.

Coi chừng sử dụng Visual Studio 2010 hoặc không sử dụng Visual Studio 2008

Theo tôi biết sau đây vẫn là sự thật. Điều này đã được đăng trong liên kết ở trên vào tháng 6 năm 2010 đề cập đến việc cố gắng xây dựng các tiện ích mở rộng với VS 2010 Express dựa trên các trình cài đặt Python có sẵn trên python.org.

Hãy cẩn thận nếu bạn làm điều này. Python 2.6 và 2.7 từ python.org được xây dựng với trình biên dịch Visual Studio 2008. Bạn sẽ cần liên kết với cùng CRT (msvcr90.dll) như Python.

Visual Studio 2010 Express liên kết với phiên bản CRT sai: msvcr100.dll.

Nếu bạn làm điều này, bạn cũng phải xây dựng lại Python với Visual Studio 2010 Express. Bạn không thể sử dụng trình cài đặt nhị phân Python chuẩn cho Windows. Bạn cũng không thể sử dụng bất kỳ tiện ích mở rộng C / C ++ nào được xây dựng bằng trình biên dịch khác với Visual Studio 2010 (Express).

Ý kiến: Đây là một lý do khiến tôi từ bỏ Windows vì tất cả công việc phát triển nghiêm túc cho OSX!


2
Cảm ơn vì sự sáng suốt. Nhưng trời đất ơi, có thực sự phải tẻ nhạt thế này không (sự thất vọng hướng đến các vị thần trăn, không phải bản thân bạn)? Tôi vừa thử cài đặt một gói khác (mcrypt), cả thông qua setup.py và pip, cả hai đều thoát ra. Làm thế nào trên thế giới người dùng Windows cài đặt các gói? Có phải tất cả đều phải tải xuống VS 2008 Express? (Tôi có VS 2010, mà tôi đoán không làm được việc).
Coldblackice

1
không, nó không; Nó không giống như thế này trên OSX hoặc Linux. Trong Windows, bạn có thể cài đặt các tệp nhị phân được biên dịch sẵn cho các bản phân phối Python mặc định nếu bạn có thể tìm thấy chúng , các công cụ mã hóa thường không có sẵn do các hạn chế xuất khẩu ngớ ngẩn ở Hoa Kỳ. Nhưng bạn có thực sự muốn cài đặt các thư viện mã hóa mà bạn không tự biên dịch từ nguồn không ???? Điều đó an toàn đến mức nào, ý tôi là thực sự làm sao bạn biết họ không bị xâm phạm theo một cách nào đó?

"Ý kiến: Đây là một lý do khiến tôi từ bỏ Windows vì tất cả công việc phát triển nghiêm túc cho OSX!" Có ... Tôi đã tải xuống python trước khi tôi có bất kỳ loại trình biên dịch C nào trên thiết bị của mình ... Sau đó, tôi đã có visual studio 2013 để làm một chút với visual basic ... Sau đó, tôi đã có MinGW để tôi có thể sử dụng GCC để biên dịch C trên windows. Nói tóm lại, trong khi một số điều này có thể là lỗi của tôi, tôi không biết python môi trường phát triển nào sẽ cố gắng sử dụng. May mắn thay, vô số gói python có sẵn trong các tệp nhị phân trực tuyến, bao gồm cả pycrypto.
trevorKirkby

15

PyCryptodome là một nhánh của PyCrypto gần như tương thích với các bánh xe Windows có sẵn trên pypi .

Bạn có thể cài đặt nó đơn giản:

pip install pycryptodome

Trang web này bao gồm các hướng dẫn để xây dựng nó từ các nguồn với trình biên dịch Microsoft.


6

Tôi đã quản lý để có được pycryptobiên dịch bằng cách sử dụng MinGW32MSYS. Điều này giả định rằng bạn có piphoặc easy_installcài đặt.

Đây là cách tôi đã làm:

1) Cài đặt MinGW32 . Vì lợi ích của lời giải thích này, hãy giả sử nó được cài đặt C:\MinGW. Khi sử dụng trình cài đặt mà tôi khuyên dùng, hãy chọn trình biên dịch C ++ mà . MSYS nên cài đặt vớiMinGW

2) Thêm c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbinvào của bạn %PATH%. Nếu bạn không quen thuộc, bài viết này rất hữu ích.

3) Từ thanh tìm kiếm, chạy msysvà thiết bị đầu cuối MSYS sẽ mở. Đối với những người quen thuộc Cygwin, nó hoạt động theo cách tương tự.

4) Từ bên trong thiết bị đầu cuối MSYS pip install pycryptosẽ chạy mà không gặp lỗi sau này.


Có vẻ như giải pháp của bạn đang thiếu một số bước. bạn có thể muốn giải thích thêm về giải pháp này một chút nữa.
Rusty Weber

5

Đối với Windows 7:

Để cài đặt Pycrypto trong Windows,

Hãy thử điều này trong Dấu nhắc lệnh,

Đặt đường dẫn = C: \ Python27 \ ScScript (nghĩa là đường dẫn nơi easy_install được đặt)

Sau đó thực hiện như sau,

dễ dàng cài đặt pycrypto

Đối với Ubuntu:

Thử cái này,

Tải xuống Pycrypto từ " https://pypi.python.org/pypi/pycrypto "

Sau đó thay đổi đường dẫn hiện tại của bạn thành đường dẫn đã tải xuống bằng thiết bị đầu cuối của bạn và người dùng nên được root:

Ví dụ: root @ xyz-virtual-machine: ~ / pycrypto-2.6.1 #

Sau đó thực hiện như sau bằng cách sử dụng thiết bị đầu cuối:

cài đặt python

Nó làm việc cho tôi. Hy vọng làm việc cho tất cả ..


Tôi đã chạy nó trên Windows 7 và lần đầu tiên tôi gặp lỗi: "lỗi: Tập lệnh thiết lập đã bị lỗi: Yêu cầu phải có Microsoft Visual C ++ 9.0 (Không thể tìm thấy vcvarsall.bat). Lấy từ aka.ms/vcpython27 ". Cài đặt nó, chạy lại lệnh và lần này nó hoạt động.
arie

5

Đối với những người tìm kiếm python 3,4 tôi đã tìm thấy một repo git với trình cài đặt chỉ hoạt động. Dưới đây là các liên kết trực tiếp cho x64x32


4

Có thể xây dựng PyCrypto bằng bộ công cụ SDK của Windows 7. Có hai phiên bản SDK của Windows 7. Phiên bản gốc (cho .Net 3.5) bao gồm các trình biên dịch dòng lệnh VS 2008. Cả hai trình biên dịch 32 và 64 bit đều có thể được cài đặt.

Bước đầu tiên là biên dịch mpir để cung cấp số học nhanh. Tôi đã ghi lại quá trình tôi sử dụng trong thư viện gmpy . Hướng dẫn chi tiết để xây dựng mpir bằng trình biên dịch SDK có thể được tìm thấy tại sdk_build

Các bước chính để sử dụng trình biên dịch SDK từ dấu nhắc DOS là:

1) Chạy vcvars32.bat hoặc vcvars64.bat nếu thích hợp.

2) Tại dấu nhắc, thực hiện "đặt MSSdk = 1"

3) Tại dấu nhắc, thực hiện "đặt DISTUTILS_USE_SDK = 1"

Điều này sẽ cho phép "cài đặt python setup.py" thành công với giả định không có vấn đề nào khác với mã C. Nhưng tôi mơ hồ nhớ rằng tôi phải chỉnh sửa một vài tệp PyCrypto để kích hoạt mpir và tìm thư viện mpir nhưng hiện tại tôi không có hệ thống Windows của mình. Sẽ mất một vài ngày trước khi tôi có thời gian để tạo lại các bước. Nếu sau đó bạn chưa báo cáo thành công, tôi sẽ đăng các bước PyCrypto. Các bước sẽ cho rằng bạn đã có thể biên dịch mpir.

Tôi hi vọng cái này giúp được.



3

Vì vậy, tôi cài đặt MinGW và giải quyết nó trên dòng cài đặt làm trình biên dịch lựa chọn. Nhưng sau đó tôi nhận được lỗi "RuntimeError: chmod error".

Lỗi này "RuntimeError: chmod error"xảy ra do tập lệnh cài đặt không tìm thấy chmodlệnh.

Làm thế nào trên thế giới tôi có được xung quanh này?

Giải pháp

Bạn chỉ cần thêm các nhị phân MSYS vào PATH và chạy lại tập lệnh cài đặt .

(NB: Lưu ý rằng MinGW đi kèm với MSYS)

Thí dụ

Ví dụ: nếu chúng ta đang ở trong thư mục 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

Tùy chọn: bạn có thể cần phải dọn dẹp trước khi chạy lại tập lệnh:

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

3
  1. Chuyển đến " Trình biên dịch Microsoft Visual C ++ cho Python 2.7 " và tiếp tục dựa trên "Yêu cầu hệ thống" (đây là những gì tôi đã làm để kết hợp các bước bên dưới với nhau).

  2. Cài đặt setuptools (setuptools 6.0 trở lên là bắt buộc để Python tự động phát hiện gói trình biên dịch này) bằng cách: pip install setuptools hoặc tải xuống nguồn "Setuptools bootstrapping" từ , lưu tệp này ở bất cứ đâu trên hệ thống filest của bạn dưới dạng "ez_python.py" và cài đặt với:python ez_python.py

  3. Lắp đặt bánh xe (bánh xe được khuyến nghị để sản xuất các gói nhị phân dựng sẵn). Bạn có thể cài đặt nó với:pip install wheel

  4. Mở Windows nâng cao Command Prompt cmd.exe (với "Chạy với tư cách quản trị viên") để cài đặt "Trình biên dịch Microsoft Visual C ++ cho Python 2.7" cho tất cả người dùng. Bạn có thể sử dụng lệnh sau để làm như vậy: msiexec / tôi C:\users\jozko\download\VCForPython27.msi ALLUSERS=1chỉ sử dụng đường dẫn của riêng bạn để tập tin:msiexec /i <path to MSI> ALLUSERS=1

  5. Bây giờ bạn sẽ có thể cài đặt pycrypto với: pip install pycrypto


3

Nếu bạn đang dùng Windows và gặp khó khăn với việc cài đặt Pycrypc, chỉ cần sử dụng: pip install pycryptodome. Nó hoạt động như một phép màu và nó sẽ làm cho cuộc sống của bạn dễ dàng hơn nhiều so với việc cố gắng thực hiện nhiều cấu hình và chỉnh sửa.


2

Đây có lẽ không phải là giải pháp tối ưu nhưng bạn có thể tải xuống và cài đặt gói Visual C ++ Express miễn phí từ MS. Điều này sẽ cung cấp cho bạn trình biên dịch C ++ mà bạn cần để biên dịch mã PyCrypto.


2

Câu trả lời của tôi có thể không liên quan đến vấn đề được đề cập ở đây, nhưng tôi gặp vấn đề tương tự với Python 3.4 trong đó Crypto.Codes không phải là một nhập khẩu hợp lệ. Vì vậy, tôi đã thử cài đặt PyCrypto và gặp vấn đề.

Sau một số nghiên cứu tôi thấy với 3,4 bạn nên sử dụng pycryptodome .

Tôi cài đặt pycryptodome bằng pycharm và tôi đã ổn.

từ Crypto. Nhập mã AES


1

Vì vậy, tôi cài đặt MinGW và giải quyết nó trên dòng cài đặt làm trình biên dịch lựa chọn. Nhưng sau đó tôi nhận được lỗi "RuntimeError: chmod error".

Bạn cần cài đặt gói msys trong MinGW

nhập mô tả hình ảnh ở đây

và thêm các mục sau trong biến env PATH của bạn.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [Đây là nơi bạn sẽ tìm thấy chmod thực thi]

Sau đó chạy lệnh của bạn từ dấu nhắc lệnh windows bình thường.


0

Vì lý do pháp lý kỳ lạ, nhị phân không được công bố theo cách thông thường. Voidspace thường là nguồn thứ hai tốt nhất. Nhưng vì khá lâu rồi, người duy trì không gian đã không cập nhật. Sử dụng mã zip từ [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]


2
Tải về nhị phân từ dropbox. Không wai.
Smit Johnth

Tôi đã tải xuống tệp nhị phân và quét nó bằng VirusTotal. Tất nhiên, điều đó chỉ có nghĩa là nó không có virus, không phải là nó không có cửa hậu mã hóa. May mắn thay, tôi chỉ sử dụng nó để phát triển vì tôi đang lưu trữ dự án này trên PythonAnywhere.
Phạm vi so với Phạm vi

0

Bước 1: Cài đặt Visual C ++ 2010 Express từ đây .

(Không cài đặt Microsoft Visual Studio 2010 Gói dịch vụ 1)

Bước 2: Xóa tất cả các gói có thể phân phối lại của Microsoft Visual C ++ 2010 khỏi Control Panel \ Programs and Feature. Nếu bạn không thực hiện thì cài đặt sẽ thất bại với lỗi "Lỗi nghiêm trọng trong khi cài đặt".

Bước 3: Cài đặt phiên bản ngoại tuyến của Windows SDK cho Visual Studio 2010 (v7.1) từ đây . Điều này là cần thiết cho các phần mở rộng 64 bit. Windows đã tích hợp sẵn cho các ISO như Pismo.

Bước 4: Bạn cần cài đặt tệp ISO với Gói kiểm tra gắn kết tệp Pismo. Tải xuống Pismo từ đây

Bước 5: Nhấp chuột phải vào tệp ISO đã tải xuống và chọn gắn kết với Pismo. Sau đó, cài đặt Setup \ SDKSetup.exe thay vì setup.exe.

Bước 6a: Tạo tệp vcvars64.bat trong C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 bằng cách thay đổi thư mục thành C: \ Program Files (x86) \ Microsoft Visual Studio phiên bản \ VC \ on dấu nhắc lệnh. Gõ lệnh trên dấu nhắc lệnh: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Bước 6b: Để cấu hình cửa sổ Dấu nhắc Lệnh này để xây dựng dòng lệnh 64 bit nhắm mục tiêu nền tảng x86, tại dấu nhắc lệnh, nhập: vcvarsall x86Bấm vào đây để có thêm tùy chọn.

Bước 7: Tại dấu nhắc lệnh, cài đặt PyCrypto bằng cách gõ: C:\Python3X>pip install -U your_wh_file


0

Tôi đã có Pycharm cho trăn.

  1. Đi đến pycharm -> file -> setting -> project interpreter

  2. Bấm vào +

  3. Tìm kiếm "pycrypto"và cài đặt gói

Lưu ý: Nếu bạn chưa cài đặt "Trình biên dịch Microsoft Visual C ++ cho Python 2.7" thì nó sẽ nhắc cài đặt, sau khi cài đặt xong, hãy thử các bước trên, nó sẽ hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.