876 Stimmen

Fehler: vcvarsall.bat kann nicht gefunden werden

Ich habe versucht, das Python-Paket zu installieren dulwich :

pip install dulwich

Aber ich erhalte eine kryptische Fehlermeldung:

error: Unable to find vcvarsall.bat

Dasselbe passiert, wenn ich versuche, das Paket manuell zu installieren:

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

7 Stimmen

Für die Zukunft wäre es schön zu sehen, auf welcher Plattform Sie dies verwenden.

0 Stimmen

47 Stimmen

Wenn Sie der Meinung sind, dass dies eine lächerlich kryptische und wenig hilfreiche Fehlermeldung ist, stimmen Sie bitte für den Fehler unter bugs.python.org/issue2943

685voto

fmuecke Punkte 8668

Update : In den Kommentaren wird darauf hingewiesen, dass die Anweisungen hier gefährlich sein können. Ziehen Sie in Erwägung, die Visual C++ 2008 Express Edition oder die speziell für diesen Zweck erstellte Microsoft Visual C++ Compiler für Python ( Details ) und NICHT unter Verwendung der unten stehenden Originalantwort. Die ursprüngliche Fehlermeldung bedeutet, dass die erforderliche Version von Visual C++ nicht installiert ist.


Für Windows-Installationen:

Während der Ausführung von setup.py für Paketinstallationen sucht Python 2.7 nach einem installierten Visual Studio 2008. Sie können Python dazu bringen, ein neueres Visual Studio zu verwenden, indem Sie den richtigen Pfad in VS90COMNTOOLS Umgebungsvariable vor dem Aufruf von setup.py .

Führen Sie den folgenden Befehl entsprechend der installierten Version von Visual Studio aus:

  • Visual Studio 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • Visual Studio 2012 (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • Visual Studio 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%
  • Visual Studio 2015 (VS14): SET VS90COMNTOOLS=%VS140COMNTOOLS%

WARNUNG: Wie weiter unten erwähnt, ist es unwahrscheinlich, dass diese Antwort funktioniert, wenn Sie versuchen, Python-Module zu kompilieren.

Siehe Erstellung von lxml für Python 2.7 unter Windows für Einzelheiten.

226voto

ninMonkey Punkte 6910

Ich habe die Lösung gefunden. Ich hatte genau das gleiche Problem und den gleichen Fehler bei der Installation von "amara". Ich hatte mingw32 installiert, aber distutils musste konfiguriert werden.

  1. Ich habe Python 2.6, das bereits installiert wurde.

  2. Ich habe mingw32 installiert, um C:\programs\mingw\

  3. Fügen Sie das bin-Verzeichnis von mingw32 zu Ihrer Umgebungsvariablen hinzu: append c:\programs\MinGW\bin; zum PATH

  4. Bearbeiten (erstellen, falls nicht vorhanden) distutils.cfg Die Datei befindet sich unter C:\Python26\Lib\distutils\distutils.cfg zu sein:

    [build]
    compiler=mingw32
  5. Jetzt laufen easy_install.exe amara .

Stellen Sie sicher, dass die Umgebung eingestellt ist, indem Sie eine neue cmd.exe .

220voto

Volodymyr Bryliant Punkte 2352

Sie können die kompilierte Version von http://www.lfd.uci.edu/~gohlke/pythonlibs/

169voto

Josh Bowden Punkte 5251

Wenn Sie mit Visual Studio C++ anstelle von mingw kompilieren möchten...

  1. ausführen. python.exe um anzuzeigen, mit welcher Version von VC++ es kompiliert wurde (siehe Beispiel unten).

    Sie ist wichtig die entsprechende Version des Visual C++-Compilers zu verwenden, mit dem Python kompiliert wurde, da destilutils 's get_build_version verhindert das Mischen von Versionen ( gemäß Piotrs Warnung ).

    • Gelb (oben) ist Python 2.7, kompiliert mit MSC v.1500 (Visual Studio C++ 2008)
    • Rot (unten) ist Python 3.4.1, kompiliert mit 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. Verwenden Sie die folgende Tabelle [1] um die interne VC++-Version mit der entsprechenden Visual Studio-Version abzugleichen:

    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)
    MSC v.1911 -> Visual C++ 2017 (15.3)
    MSC v.1912 -> Visual C++ 2017 (15.5)
    MSC v.1913 -> Visual C++ 2017 (15.6)
    MSC v.1914 -> Visual C++ 2017 (15.7)
    MSC v.1915 -> Visual C++ 2017 (15.8)
    MSC v.1916 -> Visual C++ 2017 (15.9)   
  3. Laden Sie die entsprechende Version von Visual Studio C++ aus dem vorherigen Schritt herunter und installieren Sie sie.
    Zusätzliche Hinweise für bestimmte Versionen von VC++ sind unten aufgeführt.

    Hinweise für Visual Studio C++ 2008

    Für nur den 32-Bit-Compilern, herunterladen Visual Studio C++ 2008 Express-Ausgabe .

    Bei den 64-Bit-Compilern [2] [3] , herunterladen Windows SDK für Windows 7 und .NET Framework 3.5 SP1 .

    • Deaktivieren Sie alles außer Developer Tools >> Visual C++ Compilers um Zeit und Speicherplatz für die Installation von SDK-Tools zu sparen, die Sie sonst nicht benötigen.

    Hinweise für Visual Studio C++ 2010

    Laut Microsoft wurden bei der Installation von Visual Studio 2010 SP1 möglicherweise die Compiler und Bibliotheken für VC++ entfernt.
    Wenn das der Fall ist, laden Sie Visual C++ 2010 SP1 Compiler-Aktualisierung .

    Hinweise für Visual Studio C++ 2015

    Wenn Sie die Visual Studio IDE nicht benötigen, laden Sie Visual Studio C++ 2015 Build-Tools .

    Hinweise für Visual Studio C++ 2017

    Wenn Sie die Visual Studio IDE nicht benötigen, laden Sie Build-Tools für Visual Studio 2017 .

    Anregung : Wenn Sie sowohl eine 32- als auch eine 64-Bit-Python-Installation haben, können Sie auch die Option virtualenv um getrennte Python-Umgebungen zu erstellen, so dass Sie die eine oder die andere gleichzeitig verwenden können, ohne Ihren Pfad ändern zu müssen, um die zu verwendende Python-Version auszuwählen.

Según @srodriguex können Sie das manuelle Laden der Stapeldatei (Schritte 4-6) eventuell überspringen, indem Sie stattdessen einige Stapeldateien dorthin kopieren, wo Python sucht, indem Sie diese Antwort . Wenn das nicht funktioniert, sind hier die folgenden Schritte, die bei mir ursprünglich funktioniert haben.

  1. Öffnen Sie eine cmd.exe

  2. Vor Wenn Sie versuchen, etwas zu installieren, das C-Erweiterungen erfordert, führen Sie die folgende Batch-Datei aus, um die Umgebung des VC++-Compilers in die Sitzung zu laden (d. h. Umgebungsvariablen, den Pfad zum Compiler usw.).

    Ausführen:

    • 32-Bit-Compiler:

      Hinweis : 32-Bit-Windows-Installationen haben nur C:\Program Files\ wie erwartet

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

    • 64-Bit-Compiler:

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

      Hinweis : Ja, die nativen 64-Bit-Compiler sind in Program Files (x86) . Fragen Sie mich nicht warum.
      Wenn Sie sich außerdem fragen, was der Unterschied zwischen vcvars64.bat y vcvarsx86_amd64.bat oder, noch wichtiger, der Unterschied zwischen amd64 y x86_amd64 Die ersteren sind für die nativen 64-Bit-Compiler-Tools und die letzteren sind die 64-Bit-Cross-Compiler, die unter einer 32-Bit-Windows-Installation ausgeführt werden können.

    更新しました。
    Wenn Sie aus irgendeinem Grund Folgendes erhalten error: ... was unexpected at this time. wo die ... eine Reihe von Zeichen ist, müssen Sie sicherstellen, dass die Pfadvariable keine fremden Zeichen wie zusätzliche Anführungszeichen oder Sonderzeichen enthält. Die Stapeldatei kann den Sitzungspfad nicht aktualisieren, wenn sie ihn nicht richtig zuordnen kann.

  3. Wenn das gut geklappt hat, sollten Sie eine der folgenden Meldungen erhalten, je nachdem, welche Version von VC++ und welchen Befehl Sie ausgeführt haben:

    Für die 32-Bit-Compiler-Tools:
    Setting environment for using Microsoft Visual Studio 20xx x86 tools.

    Für die 64-Bit-Compiler-Tools:
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. Jetzt führen Sie das Setup über python setup.py install o pip install pkg-name

  5. Hoffen Sie und drücken Sie die Daumen, dass die Planeten richtig ausgerichtet sind, damit VC++ kooperiert.

73voto

Colonel Panic Punkte 125419

Was ist hier los? Python-Module können sein in C oder C++ geschriebener Teil (in der Regel für Geschwindigkeit). Wenn Sie versuchen, ein solches Paket mit Pip zu installieren (oder setup.py ), muss es dieses C/C++ aus dem Quellcode kompilieren. Pip setzt schamlos voraus, dass Sie den Compiler Microsoft Visual C++ installiert haben. Wenn Sie ihn nicht haben, sehen Sie die kryptische Fehlermeldung "Error: vcvarsall.bat kann nicht gefunden werden".

Die vorgeschriebene Lösung ist die Installation eines C/C++-Compilers, entweder Microsoft Visual C++ oder MinGW (ein Open-Source-Projekt). Allerdings ist die Installation und Konfiguration eines der beiden Systeme äußerst schwierig. (Edit 2014: Microsoft hat ein spezielles C++-Compiler für Python 2.7)

Die einfachste Lösung ist die Verwendung der Windows-Installationsprogramme (.msi) von Christoph Gohlke für beliebte Python-Pakete. Er baut Installationsprogramme für Python 2.x und 3.x, 32 Bit und 64 Bit. Sie können sie herunterladen von http://www.lfd.uci.edu/~gohlke/pythonlibs/


Wenn auch Sie denken "Fehler: Unable to find vcvarsall.bat" eine lächerlich kryptische und wenig hilfreiche Meldung ist, dann kommentieren Sie bitte den Fehler unter http://bugs.python.org/issue2943 um sie durch eine hilfreichere und benutzerfreundlichere Nachricht zu ersetzen.

Zum Vergleich: Ruby wird mit einem Paketmanager Gem ausgeliefert und bietet einen quasi-offiziellen C/C++-Compiler, DevKit. Wenn Sie versuchen, ein Paket ohne diesen zu installieren, sehen Sie diese hilfreiche, freundliche und nützliche Meldung:

Bitte aktualisieren Sie Ihren PATH, um die Build-Tools einzuschließen, oder laden Sie das DevKit von http://rubyinstaller.org/downloads und folgen Sie den Anweisungen unter http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Einen längeren Aufschrei über Python-Paketierung können Sie lesen unter https://stackoverflow.com/a/13445719/284795

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X