Bagaimana cara menginstal PyCrypto di Windows?

139

Saya telah membaca setiap sumber google lainnya dan utas SO, dengan tidak ada yang berfungsi.

Python 2.7.3 32bitdiinstal pada Windows 7 64bit. Unduh, ekstrak, dan kemudian coba instal hasil PyCrypto di"Unable to find vcvarsall.bat".

Jadi saya menginstal MinGW dan menempelkannya pada baris instal sebagai kompiler pilihan. Tapi kemudian saya mendapatkan kesalahan"RuntimeError: chmod error".

Bagaimana saya bisa mengatasi ini? Saya sudah mencoba menggunakan pip, yang memberikan hasil yang sama. Saya menemukan biner PyCrypto 2.3 yang sudah dibangun dan menginstalnya, tetapi tidak ditemukan di sistem (tidak berfungsi).

Ada ide?

Coldblackice
sumber
16
Jika Anda hanya ingin menginstalnya , cukup unduh penginstal biner PyCrypto
bobobobo
12
Itu saran yang sangat berani, menginstal paket kriptografi biner dari server yang tidak dikenal dari luar negeri ...
Darren Ringer
Meskipun akhirnya saya memilih jawaban yang dipilih, saya akhirnya mengalah dan berhasil membuat paket sendiri (walaupun tentu saja saya tidak repot-repot memverifikasi tanda tangan apa pun, karena sungguh, apakah kita benar-benar aman?) Paranoia dan apatis selain itu, tautan berikut ini menyelesaikan semua masalah saya yang paling sulit dan membuat prosesnya mudah: blog.victorjabur.com/2011/06/05/05 ...
Darren Ringer
4
PyCrypto sudah mati. Penulis telah menjatuhkannya untuk sementara waktu. github.com/dlitz/pycrypto/issues/173
Smit Johnth

Jawaban:

184

Jika Anda belum memiliki lingkungan pengembangan C / C ++ yang diinstal yang kompatibel dengan binari Visual Studio yang didistribusikan oleh Python.org, maka Anda harus tetap memasang hanya paket Python murni atau paket yang tersedia biner Windows.

Untungnya, ada binari PyCrypto yang tersedia untuk Windows: http://www.voidspace.org.uk/python/modules.shtml#pycrypto

UPDATE:
Seperti @Udi menyarankan dalam komentar di bawah ini, perintah berikut ini juga menginstal pycryptodan dapat digunakan virtualenvjuga:

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

Perhatikan untuk memilih tautan yang relevan untuk pengaturan Anda dari daftar ini

Jika Anda mencari build untuk Python 3.5, lihat PyCrypto di python 3.5

Michael Dillon
sumber
28
Anda dapat menggunakan easy_install untuk menginstal binari dari url:easy_install http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
Udi
Pemasang di voidspace.org.uk/python/modules.shtml#pycrypto bekerja untuk saya. Satu tip: Jika Anda secara tidak sengaja menjalankan penginstal 64-bit tetapi memiliki versi 32-bit Python 2.7, penginstal akan gagal dengan peringatan "Python versi 2.7 diperlukan, yang tidak ditemukan dalam registri."
Steve Saporta
1
installer gui gagal untuk saya. easy_install succeded
pscheit
@Udi mengapa Anda perlu easy_install untuk exe?
Smit Johnth
@SmitJohnth easy_installakan menginstal paket dalam virtualenv (jika Anda memilikinya), dan akan menekan semua interaksi grafis (untuk mengotomatisasi atau hanya menghemat waktu).
Udi
32

Microsoft baru-baru ini merilis Compiler Microsoft Visual C ++ mandiri yang didedikasikan untuk Python 2.7 . Jika Anda menggunakan Python 2.7, cukup instal kompiler itu dan Setuptools 6.0 atau yang lebih baru, dan sebagian besar paket dengan ekstensi C sekarang akan dapat dikompilasi dengan mudah.

Jason R. Coombs
sumber
Wow, sangat menarik. Tapi masih 84 Mb. Dan sedikit terlambat, lihat jawaban saya tentang roda.
Smit Johnth
1
Bahkan dengan roda, ini adalah pilihan yang jauh lebih baik daripada membenturkan kepala Anda melawan VS 2008 dan vcvarsall.bat untuk saat-saat ketika Anda ingin membangun sesuatu dari sumber, atau menggunakan modul yang tidak memiliki roda. MSVC untuk Python mungkin tidak ada dalam "jangka panjang," tapi ini sangat berguna saat ini.
GrandOpener
1
Masih solusi termudah yang saya temukan; Saya selalu benci harus mengandalkan binari pra-dibangun dari situs web acak (untuk saya).
Myk Willis
28

Setelah bertahun-tahun , python akhirnya setuju untuk disebut distribusi biner wheelyang memungkinkan untuk menginstal ekstensi biner bahkan pada Windows tanpa memiliki kompiler dengan sederhana pip install packagename. Ada daftar paket populer dengan statusnya. Pycrypto belum ada di sana, tetapi lxml, PySide dan Scrapy misalnya.

Diedit Nov 2015 : pip uninstall pycrypto& pip install pycryptodome. Ini adalah pycryptogarpu dengan fitur baru dan mendukung roda. Itu menggantikan pycrypto, sehingga kode yang ada akan terus berfungsi (lihat https://pycryptodome.readthedocs.org/en/latest/src/examples.html )

Smit Johnth
sumber
20

Untuk VS2010:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Untuk VS2012:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

lalu Panggil:

pip install pyCrypto 
Chandan
sumber
1
Untuk VS2013: SET VS90COMNTOOLS =% VS120COMNTOOLS%
Jake1164
2
Sementara ini dapat bekerja dalam kasus-kasus tertentu, ini BUKAN solusi. Anda perlu memastikan bahwa setiap dependensi dikompilasi dengan kompiler yang sama seperti yang dikompilasi dengan Python!
Daniel van Flymen
1
Bagaimana dengan VS2017 ?! Apa yang harus saya atur?!
mahshid.r
1
@ mahshid.r Anda dapat memeriksa variabel lingkungan untuk VSxxxCOMNTOOLS dan mendapatkan nama variabel, kemudian mengatur variabel VS90COMNTOOLS ke nilai VSxxxCOMNTOOLS. Dalam CMD: 1. "SET VS90COMNTOOLS =% VS140COMNTOOLS%" 2. pip instal pyCrypto
Oriel Cochavi
18

Secara umum

vcvarsall.batadalah bagian dari kompiler Visual C ++, Anda memerlukannya untuk menginstal apa yang ingin Anda instal. Jangan pernah mencoba berurusan dengan MingGW jika Python Anda dikompilasi dengan Visual Studio toolchain dan sebaliknya. Bahkan versi rantai alat Microsoft adalah penting. Python dikompilasi dengan VS 2008 tidak akan berfungsi dengan ekstensi dikompilasi dengan VS 2010!

Anda harus mengkompilasi PyCrypto dengan kompiler yang sama dengan versi Python dikompilasi. Google untuk "Tidak dapat menemukan vcvarsall.bat" karena itu adalah akar masalah Anda, itu adalah masalah yang sangat umum dengan mengkompilasi ekstensi Python di Windows.

Ada banyak informasi dan banyak yang harus dibaca untuk mendapatkan ini dengan benar pada sistem apa pun yang Anda gunakan dengan tautan ini.

Waspadalah menggunakan Visual Studio 2010 atau tidak menggunakan Visual Studio 2008

Sejauh yang saya tahu berikut ini masih benar. Ini diposting di tautan di atas pada Juni 2010 yang merujuk pada mencoba membangun ekstensi dengan VS 2010 Express terhadap pemasang Python yang tersedia di python.org.

Hati-hati jika Anda melakukan ini. Python 2.6 dan 2.7 dari python.org dibuat dengan kompiler Visual Studio 2008. Anda harus terhubung dengan CRT (msvcr90.dll) yang sama dengan Python.

Visual Studio 2010 Express tautan dengan versi CRT yang salah: msvcr100.dll.

Jika Anda melakukan ini, Anda juga harus membangun kembali Python dengan Visual Studio 2010 Express. Anda tidak dapat menggunakan penginstal biner Python standar untuk Windows. Anda juga tidak dapat menggunakan ekstensi C / C ++ yang dibangun dengan kompiler berbeda dari Visual Studio 2010 (Express).

Opini: Ini adalah salah satu alasan saya meninggalkan Windows untuk semua pekerjaan pengembangan serius untuk OSX!

Komunitas
sumber
2
Terima kasih atas wawasannya. Tapi astaga, haruskah ini menjadi membosankan (frustrasi diarahkan pada dewa python, bukan dirimu sendiri)? Saya baru saja mencoba menginstal paket lain (mcrypt), baik melalui setup.py dan pip, keduanya keluar dengan kesalahan. Bagaimana di dunia ini pengguna Windows menginstal paket? Apakah mereka semua harus mengunduh VS 2008 Express? (Saya memiliki VS 2010, yang saya kira tidak melakukan pekerjaan).
Coldblackice
1
tidak, itu tidak; tidak seperti ini di OSX atau Linux. Di Windows Anda dapat menginstal binari yang telah dikompilasi untuk distribusi Python default jika Anda dapat menemukannya , hal-hal kriptografi biasanya tidak tersedia karena pembatasan ekspor konyol di AS. Tetapi apakah Anda benar-benar ingin menginstal perpustakaan enkripsi yang tidak Anda kompilasi sendiri dari sumbernya ???? Seberapa aman itu, maksud saya benar-benar bagaimana Anda tahu mereka tidak dikompromikan dalam beberapa cara?
"Opini: Ini adalah salah satu alasan saya meninggalkan Windows untuk semua pekerjaan pengembangan serius untuk OSX!" Ya ... Saya mengunduh python sebelum saya memiliki jenis kompiler C pada perangkat saya ... Kemudian saya mendapatkan visual studio 2013 untuk melakukan sedikit dengan visual basic ... Kemudian setelah itu saya mendapatkan MinGW sehingga saya dapat menggunakan GCC untuk mengompilasi C di windows. Singkatnya, sementara beberapa di antaranya mungkin salah saya, saya tidak tahu apa yang akan coba digunakan oleh lingkungan pengembangan python. Untungnya, banyak paket python tersedia dalam binari online, termasuk pycrypto.
trevorKirkby
15

PyCryptodome adalah garpu PyCrypto yang hampir kompatibel dengan roda Windows yang tersedia di pypi .

Anda dapat menginstalnya dengan sederhana:

pip install pycryptodome

Situs web ini juga memuat instruksi untuk membuatnya dari sumber dengan kompiler Microsoft juga.

SquareRootOfTwentyThree
sumber
6

Saya telah berhasil pycryptomengkompilasi dengan menggunakan MinGW32dan MSYS. Ini mengandaikan bahwa Anda memiliki pipatau easy_installmenginstal.

Begini cara saya melakukannya:

1) Instal MinGW32 . Demi penjelasan ini, mari asumsikan sudah terpasang di C:\MinGW. Saat menggunakan penginstal, yang saya rekomendasikan, pilih kompiler C ++ yang . harus diinstal dengan MSYSMinGW

2) Tambahkan c:\mingw\bin,c:\mingw\mingw32\bin,C:\MinGW\msys\1.0, c:\mingw\msys\1.0\bin and c:\mingw\msys\1.0\sbinke %PATH%. Jika Anda tidak terbiasa, artikel ini ini sangat membantu.

3) Dari bilah pencarian, jalankan msysdan terminal MSYS akan terbuka. Bagi mereka yang terbiasa Cygwin, itu bekerja dengan cara yang sama.

4) Dari dalam terminal MSYS pip install pycryptoharus berjalan tanpa kesalahan setelah ini.

darnold0714
sumber
Sepertinya solusi Anda kurang beberapa langkah. Anda mungkin ingin menguraikan solusi ini sedikit lebih banyak.
Rusty Weber
5

Untuk Windows 7:

Untuk menginstal Pycrypto di Windows,

Coba ini di Command Prompt,

Setel path = C: \ Python27 \ Scripts (yaitu path tempat easy_install berada)

Kemudian jalankan hal berikut,

easy_install pycrypto

Untuk Ubuntu:

Coba ini,

Unduh Pycrypto dari " https://pypi.python.org/pypi/pycrypto "

Kemudian ubah jalur Anda saat ini ke jalur yang diunduh menggunakan terminal Anda dan pengguna harus root:

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

Kemudian jalankan hal berikut menggunakan terminal:

instal setup.py python

Ini berhasil untuk saya. Harapan bekerja untuk semua ..

JayaPrakash
sumber
Saya menjalankan ini pada Windows 7 dan pertama kali saya mendapatkan kesalahan: "error: Setup script keluar dengan kesalahan: Microsoft Visual C ++ 9.0 diperlukan (Tidak dapat menemukan vcvarsall.bat). Dapatkan dari aka.ms/vcpython27 ". Instal itu, jalankan perintah lagi dan kali ini berhasil.
arie
5

Bagi Anda yang mencari python 3.4 saya menemukan repo git dengan installer yang hanya berfungsi. Berikut ini tautan langsung untuk x64 dan x32

pengguna25064
sumber
4

Dimungkinkan untuk membuat PyCrypto menggunakan toolkit Windows 7 SDK. Ada dua versi Windows 7 SDK. Versi asli (untuk .Net 3.5) termasuk kompiler baris perintah VS 2008. Baik kompiler 32- dan 64-bit dapat diinstal.

Langkah pertama adalah mengkompilasi mpir untuk memberikan aritmatika cepat. Saya telah mendokumentasikan proses yang saya gunakan di perpustakaan gmpy . Petunjuk terperinci untuk membangun mpir menggunakan kompiler SDK dapat ditemukan di sdk_build

Langkah-langkah kunci untuk menggunakan kompiler SDK dari DOS prompt adalah:

1) Jalankan vcvars32.bat atau vcvars64.bat yang sesuai.

2) Saat diminta, jalankan "set MSSdk = 1"

3) Saat diminta, jalankan "set DISTUTILS_USE_SDK = 1"

Ini akan memungkinkan "python setup.py install" berhasil dengan asumsi tidak ada masalah lain dengan kode C. Tapi saya samar-samar ingat bahwa saya harus mengedit beberapa file PyCrypto untuk mengaktifkan mpir dan menemukan pustaka mpir tetapi saya tidak memiliki sistem Windows saya saat ini. Ini akan menjadi beberapa hari sebelum saya punya waktu untuk membuat ulang langkah-langkahnya. Jika Anda belum melaporkan keberhasilan pada saat itu, saya akan memposting langkah-langkah PyCrypto. Langkah-langkahnya akan menganggap Anda mampu mengompilasi mpir.

Saya harap ini membantu.

casevh
sumber
3

Jadi saya menginstal MinGW dan menempelkannya pada baris instal sebagai kompiler pilihan. Tapi kemudian saya mendapatkan kesalahan "RuntimeError: chmod error".

Kesalahan ini "RuntimeError: chmod error"terjadi karena skrip instal tidak menemukan chmodperintah.

Bagaimana saya bisa mengatasi ini?

Larutan

Anda hanya perlu menambahkan biner MSYS ke PATH dan menjalankan kembali skrip instal .

(NB: Perhatikan bahwa MinGW hadir dengan MSYS)

Contoh

Misalnya, jika kita berada di folder 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

Opsional: Anda mungkin perlu membersihkan sebelum menjalankan kembali skrip:

`C:\<..>\pycrypto-2.6.1\dist\pycrypto-2.6.1> python setup.py clean`
Bludzee
sumber
3
  1. Pergi ke " Microsoft Visual C ++ Compiler untuk Python 2.7 " dan lanjutkan berdasarkan "Persyaratan Sistem" (inilah yang saya lakukan untuk meletakkan langkah-langkah di bawah ini bersama-sama).

  2. Instal setuptools (setuptools 6.0 atau yang lebih baru diperlukan untuk Python untuk secara otomatis mendeteksi paket kompiler ini) baik dengan: pip install setuptools atau mengunduh sumber dari "Setuptools bootstrap installer" dari , simpan file ini di suatu tempat di sistem file Anda sebagai "ez_python.py" dan instal dengan:python ez_python.py

  3. Instal wheel (roda direkomendasikan untuk memproduksi paket biner yang sudah dibangun sebelumnya). Anda dapat menginstalnya dengan:pip install wheel

  4. Buka Command Prompt Windows ditinggikan cmd.exe (dengan "Run as administrator") untuk menginstal "Microsoft Visual C ++ Compiler untuk Python 2.7" untuk semua pengguna. Anda dapat menggunakan perintah berikut untuk melakukannya: msiexec / saya C:\users\jozko\download\VCForPython27.msi ALLUSERS=1cukup menggunakan path Anda sendiri ke file:msiexec /i <path to MSI> ALLUSERS=1

  5. Sekarang Anda harus dapat menginstal pycrypto dengan: pip install pycrypto

damian1baran
sumber
3

Jika Anda menggunakan Windows dan berjuang untuk menginstal Pycrypcto cukup gunakan: pip install pycryptodome. Ini bekerja seperti keajaiban dan itu akan membuat hidup Anda lebih mudah daripada mencoba melakukan banyak konfigurasi dan tweak.

john
sumber
2

Ini mungkin bukan solusi optimal tetapi Anda dapat mengunduh dan menginstal paket Visual C ++ Express gratis dari MS. Ini akan memberi Anda kompiler C ++ yang Anda perlukan untuk mengkompilasi kode PyCrypto.

sizzzzlerz
sumber
2

Jawaban saya mungkin tidak terkait dengan masalah yang disebutkan di sini, tapi saya punya masalah yang sama dengan Python 3.4 mana Crypto.Cipher bukan impor yang valid. Jadi saya mencoba menginstal PyCrypto dan mengalami masalah.

Setelah beberapa penelitian saya menemukan dengan 3.4 Anda harus menggunakan pycryptodome .

Saya menginstal pycryptodome menggunakan pycharm dan saya baik-baik saja.

dari impor Crypto.Cipher AES

Virendra Patel
sumber
1

Jadi saya menginstal MinGW dan menempelkannya pada baris instal sebagai kompiler pilihan. Tapi kemudian saya mendapatkan kesalahan "RuntimeError: chmod error".

Anda perlu menginstal paket msys di bawah MinGW

masukkan deskripsi gambar di sini

dan tambahkan entri berikut dalam variabel env PATH Anda.

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin [Di sinilah Anda akan menemukan chmod dapat dijalankan]

Kemudian jalankan perintah Anda dari prompt perintah windows normal.

Aniket Thakur
sumber
0

Karena alasan hukum yang aneh, biner tidak dipublikasikan dengan cara biasa. Voidspace biasanya merupakan sumber kedua terbaik. Tetapi sejak beberapa waktu, pengelola voidspace tidak memperbarui. Gunakan zip dari [ https://www.dropbox.com/s/n6rckn0k6u4nqke/pycrypto-2.6.1.zip?dl=0]

Zimmermann
sumber
2
Unduh binari dari dropbox. Tidak ada.
Smit Johnth
Saya mengunduh biner dan memindainya dengan VirusTotal. Tentu saja, itu hanya berarti tidak memiliki virus, bukan berarti tidak memiliki backdoor kriptografis. Untungnya saya hanya menggunakannya untuk pengembangan karena saya hosting proyek ini di PythonAnywhere.
Rentang vs Rentang
0

Langkah 1: Instal Visual C ++ 2010 Express dari sini .

(Jangan menginstal Microsoft Visual Studio 2010 Paket Layanan 1)

Langkah 2: Hapus semua paket Microsoft Visual C ++ 2010 Redistributable dari Control Panel \ Programs and Features. Jika Anda tidak melakukan itu maka instalasi akan gagal dengan kesalahan "Kesalahan fatal selama instalasi" yang tidak jelas.

Langkah 3: Instal versi offline Windows SDK untuk Visual Studio 2010 (v7.1) dari sini . Ini diperlukan untuk ekstensi 64bit. Windows memiliki pemasangan bawaan untuk ISO seperti Pismo.

Langkah 4: Anda perlu menginstal file ISO dengan Paket Audit Mount Pismo File. Unduh Pismo dari sini

Langkah 5: Klik kanan file ISO yang diunduh dan pilih mount dengan Pismo. Setelah itu, instal Setup \ SDKSetup.exe alih-alih setup.exe.

Langkah 6a: Buat file vcvars64.bat di C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 dengan mengubah direktori ke C: \ Program Files (x86) \ Microsoft Visual Studio versi \ VC \ on command prompt. Ketik perintah pada prompt perintah: cd C:\Program Files (x86)\Microsoft Visual Studio version\VC\r

Langkah 6b: Untuk mengkonfigurasi jendela Command Prompt ini untuk membangun baris perintah 64-bit yang menargetkan platform x86, pada prompt perintah, masukkan: vcvarsall x86Klik di sini untuk opsi lainnya.

Langkah 7: Pada prompt perintah, instal PyCrypto dengan mengetik: C:\Python3X>pip install -U your_wh_file

Asubiaro Toluwase Victor
sumber
0

Saya punya Pycharm untuk python.

  1. Pergi ke pycharm -> file -> setting -> project interpreter

  2. Klik +

  3. Cari "pycrypto"dan instal paket

Catatan: Jika Anda tidak menginstal "Microsoft Visual C ++ Compiler for Python 2.7" maka itu akan meminta untuk instalasi, setelah instalasi selesai coba langkah-langkah di atas itu akan berfungsi dengan baik.

RAKESH
sumber