Pertanyaan kesalahan: Tidak dapat menemukan vcvarsall.bat


Saya mencoba menginstal paket Python Dulwich:

pip install dulwich

Tetapi saya mendapatkan pesan kesalahan yang samar:

error: Unable to find vcvarsall.bat

Hal yang sama terjadi jika saya mencoba menginstal paket secara manual:

> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat

806
2018-05-12 10:24


asal


Jawaban:


Memperbarui: Komentar menunjukkan bahwa instruksi di sini mungkin berbahaya. Pertimbangkan untuk menggunakan edisi Visual C ++ 2008 Express atau yang dibuat dengan tujuan Microsoft Visual C ++ Compiler untuk Python (rincian) dan TIDAK menggunakan jawaban asli di bawah ini. Pesan galat asli berarti versi Visual C ++ yang diperlukan tidak diinstal.


677
2018-05-11 20:39



Saya menemukan solusinya. Saya memiliki masalah yang sama persis, dan kesalahan, menginstal 'amara'. Saya telah menginstal mingw32, tetapi distutil perlu dikonfigurasi.

  1. Saya memiliki Python 2.6 yang sudah diinstal.
  2. Saya telah menginstal mingw32 ke C:\programs\mingw\
  3. Tambahkan direktori bin mingw32 ke variabel lingkungan Anda: tambahkan c:\programs\MinGW\bin; ke PATH
  4. Edit (buat jika tidak ada) distutils.cfg file berada di C:\Python26\Lib\distutils\distutils.cfg menjadi:

    [build]
    compiler=mingw32
    
  5. Sekarang jalankan easy_install.exe amara.

Pastikan lingkungan diatur dengan membuka yang baru cmd.exe.


224
2018-05-15 03:37



Anda dapat menginstal versi yang dikompilasi dari http://www.lfd.uci.edu/~gohlke/pythonlibs/


221
2018-05-12 19:55



Jika Anda ingin mengkompilasi dengan Visual Studio C ++ daripada mingw ...

  1. Menjalankan python.exe untuk menampilkan versi VC ++ mana yang dikompilasi dengan (contoh ditunjukkan di bawah).

    ini penting untuk menggunakan versi yang sesuai dari kompiler Visual C ++ yang dikompilasi oleh Python sejak itu distilutils's get_build_version mencegah versi pencampuran (per peringatan Piotr).

    • Kuning (atas) adalah Python 2.7, dikompilasi dengan MSC v.1500 (Visual Studio C ++ 2008)
    • Merah (bawah) adalah Python 3.4.1, dikompilasi dengan MSC v.1600 (Visual Studio C ++ 2010)

    Example from the command line showing Python 2.7 compiled with MSC v.1500 and Python 3.4.1 compiled with MSC v.1600

  2. Gunakan tabel di bawah ini[1] untuk mencocokkan versi VC ++ internal dengan rilis Visual Studio yang sesuai:

    MSC v.1000 -> Visual C++ 4.x        
    MSC v.1100 -> Visual C++ 5          
    MSC v.1200 -> Visual C++ 6          
    MSC v.1300 -> Visual C++ .NET       
    MSC v.1310 -> Visual C++ .NET 2003  
    MSC v.1400 -> Visual C++ 2005  (8.0)
    MSC v.1500 -> Visual C++ 2008  (9.0)
    MSC v.1600 -> Visual C++ 2010 (10.0)
    MSC v.1700 -> Visual C++ 2012 (11.0)
    MSC v.1800 -> Visual C++ 2013 (12.0)
    MSC v.1900 -> Visual C++ 2015 (14.0)
    MSC v.1910 -> Visual C++ 2017 (15.0)      
    
  3. Unduh dan instal versi Visual Studio C ++ yang sesuai dari langkah sebelumnya.
    Catatan tambahan untuk versi VC ++ tertentu tercantum di bawah ini.

    Catatan untuk Visual Studio C ++ 2008

    Untuk hanya 32-bit compilers, unduh Visual Studio C ++ 2008 Express Edition.

    Untuk kompiler 64-bit[2][3], unduh Windows SDK untuk Windows 7 dan .NET Framework 3.5 SP1.

    • Hapus centang semuanya kecuali Developer Tools >> Visual C++ Compilers untuk menghemat waktu dan ruang disk dari menginstal alat SDK yang Anda tidak perlu.

    Catatan untuk Visual Studio C ++ 2010

    Menurut Microsoft, jika Anda menginstal Visual Studio 2010 SP1, itu mungkin telah menghapus compiler dan pustaka untuk VC ++.
    Jika itu masalahnya, unduh Visual C ++ 2010 SP1 Pembaruan Kompilator.

    Catatan untuk Visual Studio C ++ 2015

    Jika Anda tidak memerlukan Visual Studio IDE, unduh Visual Studio C ++ 2015 Build Tools.

    Catatan untuk Visual Studio C ++ 2017

    Jika Anda tidak memerlukan Visual Studio IDE, unduh Bangun Alat untuk Visual Studio 2017.

    Saran: Jika Anda memiliki instalasi Python 32 dan 64-bit, Anda mungkin juga ingin menggunakannya virtualenv untuk membuat lingkungan Python terpisah sehingga Anda dapat menggunakan satu atau yang lain pada satu waktu tanpa mengacaukan jalan Anda untuk memilih versi Python yang akan digunakan.

Menurut @srodriguex, Anda mungkin dapat melewatkan pemuatan secara manual file batch (Langkah 4-6) dengan cara menyalin beberapa file batch ke tempat Python mencari dengan mengikuti jawaban ini. Jika itu tidak berhasil, berikut adalah langkah-langkah berikut yang awalnya bekerja untuk saya.

  1. Buka a cmd.exe

  2. Sebelum Anda mencoba menginstal sesuatu yang membutuhkan ekstensi C, jalankan file batch berikut untuk memuat lingkungan kompilator VC ++ ke dalam sesi (yaitu variabel lingkungan, path ke kompilator, dll).

    Menjalankan: 

    • 32-bit Compiler:

      Catatan: Instalasi Windows 32-bit hanya akan ada C:\Program Files\ seperti yang diharapkan

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"

    • Kompiler 64-bit:

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars64.bat"

      Catatan: Ya, kompiler 64-bit asli ada di dalamnya Program Files (x86). Jangan tanya kenapa.
        Selain itu, jika Anda bertanya-tanya apa perbedaannya vcvars64.bat dan vcvarsx86_amd64.bat atau yang lebih penting perbedaannya amd64 dan x86_amd64, yang pertama adalah untuk alat compiler 64-bit asli dan yang terakhir adalah 64-bit cross compilers yang dapat berjalan pada instalasi Windows 32-bit.

    Memperbarui:
    Jika karena alasan tertentu Anda mendapatkan error: ... was unexpected at this time. Dimana ... adalah beberapa rangkaian karakter, maka Anda perlu memeriksa bahwa variabel path Anda tidak memiliki karakter asing seperti kutipan tambahan atau karakter tersesat. File batch tidak akan dapat memperbarui jalur sesi Anda jika tidak bisa memahaminya di tempat pertama.

  3. Jika itu berjalan dengan baik, Anda harus mendapatkan salah satu pesan berikut tergantung pada versi VC ++ dan perintah mana yang Anda jalankan:

    Untuk alat compiler 32-bit:
    Setting environment for using Microsoft Visual Studio 20xx x86 tools. 

    Untuk alat compiler 64-bit:
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. Sekarang, jalankan pengaturan melalui python setup.py install atau pip install pkg-name

  5. Harap dan silangkan jari-jari Anda bahwa planet-planet diselaraskan dengan benar untuk VC ++ untuk bekerja sama.


146
2017-08-04 16:48



Apa yang sedang terjadi? Modul Python bisa bagian yang ditulis dalam C atau C ++ (biasanya untuk kecepatan). Jika Anda mencoba menginstal paket seperti itu dengan Pip (atau setup.py), itu harus mengkompilasi C / C ++ dari sumber. Di luar kotak, Pip akan dengan berani menganggap Anda compiler Microsoft Visual C ++ diinstal. Jika Anda tidak memilikinya, Anda akan melihat pesan galat samar ini "Kesalahan: Tidak dapat menemukan vcvarsall.bat".

Solusi yang ditentukan adalah menginstal kompiler C / C ++, baik Microsoft Visual C ++, atau MinGW (proyek sumber terbuka). Namun, menginstal dan mengkonfigurasi keduanya sangat sulit. (Edit 2014: Microsoft telah menerbitkan khusus C ++ compiler untuk Python 2.7)

Solusi termudah adalah dengan menggunakan installer Windows Christoph Gohlke (.msi) untuk paket Python populer. Dia membangun installer untuk Python 2.x dan 3.x, 32 bit dan 64 bit. Anda dapat mengunduhnya dari http://www.lfd.uci.edu/~gohlke/pythonlibs/


Jika Anda juga berpikir "Kesalahan: Tidak dapat menemukan vcvarsall.bat" adalah pesan yang sangat menggelikan dan tidak membantu, maka silakan komentari bug di http://bugs.python.org/issue2943 untuk menggantinya dengan pesan yang lebih bermanfaat dan ramah-pengguna.

Sebagai perbandingan, kapal Ruby dengan manajer paket Gem dan menawarkan kompiler C / C ++ quasi-resmi, DevKit. Jika Anda mencoba untuk menginstal paket tanpa itu, Anda akan melihat pesan berguna yang bermanfaat ini:

Harap perbarui PATH Anda untuk menyertakan membangun alat atau mengunduh DevKit dari http://rubyinstaller.org/downloads dan ikuti instruksi di http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Anda dapat membaca lebih lama tentang kemasan Python di https://stackoverflow.com/a/13445719/284795


70
2017-08-02 13:48



Anda harus menginstal compiler Microsoft, yang kompatibel dengan compiler yang digunakan untuk membangun Python. Ini berarti Anda perlu Visual C ++ 2008 (atau yang lebih baru, dengan beberapa tweaking).

Microsoft kini memasok kompilator dan header yang disertakan hanya untuk dapat mengkompilasi ekstensi Python, di URL yang mudah diingat:

Microsoft Visual C ++ Compiler untuk Python 2.7

http://aka.ms/vcpython27

Ini adalah paket yang relatif kecil; 85MB untuk diunduh, dipasang tanpa hak istimewa admin, tidak perlu boot ulang. Namanya sedikit menyesatkan, kompiler akan bekerja untuk versi Python yang awalnya dikompilasi dengan Visual C ++ 2008, bukan hanya Python 2.7.

Jika Anda memulai perintah interaktif atau cetak Python sys.version, carilah MSC string versi; jika memang MSC v.1500 Anda dapat menggunakan alat ini.

Dari pengumuman asli ke daftar distutils:

Microsoft telah merilis paket kompiler untuk Python 2.7 untuk memudahkan orang-orang membangun dan mendistribusikan modul C ekstensi mereka di Windows. Microsoft Visual C ++ Compiler untuk Python 2.7 (a.k.a. VC9) tersedia dari: http://aka.ms/vcpython27 

Paket ini berisi semua alat dan header yang diperlukan untuk membangun modul ekstensi C untuk Python 2.7 32-bit dan 64-bit (perhatikan bahwa beberapa modul ekstensi memerlukan ketergantungan pihak ketiga seperti OpenSSL atau libxml2 yang tidak termasuk). Versi lain dari Python yang dibangun dengan Visual C ++ 2008 juga didukung, jadi "Python 2.7" hanya iklan - itu akan berfungsi dengan baik dengan 2.6 dan 3.2.

Perhatikan bahwa Anda perlu memilikinya setuptools 6.0 atau lebih baru diinstal (tercantum dalam persyaratan sistem pada halaman unduhan). Proyek yang Anda pasang harus digunakan setuptools.setup()tidak distutils atau deteksi otomatis tidak akan berfungsi.

Microsoft telah menyatakan bahwa mereka ingin menjaga URL tetap stabil, sehingga skrip otomatis dapat merujuknya dengan mudah.


63
2017-09-30 18:23



Saya baru saja mengalami masalah yang sama, jadi saya akan menceritakan kisah saya di sini berharap itu membantu orang lain dengan masalah yang sama dan menyelamatkan mereka beberapa jam yang baru saja saya habiskan:

Saya memiliki mingw (g ++ (GCC) 4.6.1) dan python 2.7.3 dalam kotak windows 7 dan saya mencoba menginstal PyCrypto.

Semuanya dimulai dengan kesalahan ini ketika menjalankan setup.py install:

error: Unable to find vcvarsall.bat

Mudah dipecahkan setelah googling kesalahan dengan menentukan mingw sebagai kompiler pilihan:

setup.py install build --compiler=mingw32

Masalahnya adalah saya mengalami kesalahan yang berbeda:

configure: error: cannot run C compiled programs.

Ternyata anti-virus saya memblokir eksekusi dari .exe yang baru dikompilasi. Saya hanya menonaktifkan anti-virus "perisai penduduk" dan pergi ke kesalahan berikutnya:

cc1.exe: error: unrecognized command line option '-mno-cygwin' 
error: command 'gcc' failed with exit status 1

Ini memecahkannya: "Installah versi MinGW yang sedikit lebih tua, atau edit distutils \ cygwinccompiler.py di direktori Python Anda untuk menghapus semua instance -mno-cygwin." (dari sini)

Sekarang, akhirnya saya bisa mulai bekerja.


55
2018-05-08 15:31



Sepertinya ini mencari compiler VC, jadi Anda bisa mencoba menyebutkan compiler type dengan -c mingw32, karena Anda memiliki msys

python setup.py install -c mingw32

23
2018-05-12 10:44



Saya memiliki python 2.73 dan windows 7. Solusi yang berhasil bagi saya adalah:

  1. Menambahkan direktori bin mingw32 ke variabel lingkungan: tambahkan PATH dengan C:\programs\mingw\bin;
  2. Dibuat distutils.cfg berlokasi di C:\Python27\Lib\distutils\distutils.cfg mengandung:

    [build]
    compiler=mingw32
    

Untuk menghadapi MinGW yang tidak mengenali flag -mno-cygwin lagi, hapus bendera di C: \ Python27 \ Lib \ distutils \ cygwincompiler.py baris 322 hingga 326, sehingga terlihat seperti ini:

  self.set_executables(compiler='gcc -O -Wall',
                         compiler_so='gcc -mdll -O -Wall',
                         compiler_cxx='g++ -O -Wall',
                         linker_exe='gcc',
                         linker_so='%s %s %s'
                                    % (self.linker_dll, shared_option,
                                       entry_point))

20
2018-03-30 13:00



Lihatlah di setup.py file paket yang Anda coba instal. Jika itu paket yang lebih lama mungkin mengimpor distutils.core.setup() daripada setuptools.setup().

Saya mengikuti ini (tahun 2015) dengan kombinasi faktor-faktor ini:

  1. Microsoft Visual C ++ Compiler untuk Python 2.7 dari http://aka.ms/vcpython27

  2. Paket lama yang menggunakan distutils.core.setup()

  3. Mencoba melakukan python setup.py build daripada menggunakan pip.

Jika Anda menggunakan pip versi terbaru, itu akan memaksa (monkeypatch) paket untuk menggunakan setuptools, bahkan jika setup.py panggilan untuk distutils. Namun, jika Anda tidak menggunakan pip, dan sebaliknya hanya melakukan python setup.py build, proses pembangunan akan digunakan distutils.core.setup(), yang tidak tahu tentang lokasi pemasangan compiler.


Larutan

Langkah 1: Buka Prompt Perintah Visual C ++ 2008 yang sesuai

Buka menu Start atau layar Start, dan cari "Visual C ++ 2008 Command Prompt 32-bit" (jika python Anda 32-bit) atau "Visual C ++ 2008 Command Prompt 64-bit" (jika python Anda 64-bit) . Menjalankannya. Prompt perintah harus mengatakan Visual C ++ 2008 ... di judul bar.

Langkah 2: Tetapkan variabel lingkungan

Setel variabel lingkungan ini di command prompt yang baru saja Anda buka.

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

Referensi http://bugs.python.org/issue23246

Langkah 3: Bangun dan pasang

cd ke paket yang ingin Anda buat, dan jalankan python setup.py build, kemudian python setup.py install. Jika Anda ingin menginstal ke virtualenv, aktifkan sebelum Anda membangun.


16
2018-02-19 22:00