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

64voto

Martijn Pieters Punkte 953257

Sie müssen einen Microsoft-Compiler installieren, der mit dem Compiler kompatibel ist, der zum Erstellen von Python verwendet wird. Das heißt, Sie benötigen Visual C++ 2008 (oder neuer, mit einige Optimierungen ).

Microsoft liefert jetzt einen gebündelten Compiler und Header nur um Python-Erweiterungen kompilieren zu können, unter der denkwürdigen URL:

Microsoft Visual C++ Compiler für Python 2.7

http://aka.ms/vcpython27

Dies ist ein relativ kleines Paket; 85MB zum Herunterladen, installierbar ohne Admin-Rechte, kein Neustart erforderlich. Der Name ist ein wenig irreführend, der Compiler funktioniert für jede Python-Version, die ursprünglich mit Visual C++ 2008 kompiliert wurde, nicht nur für Python 2.7.

Wenn Sie eine interaktive Python-Eingabeaufforderung starten oder drucken sys.version suchen Sie nach dem MSC Versionszeichenfolge; wenn sie lautet MSC v.1500 können Sie dieses Werkzeug verwenden.

Von der ursprüngliche Ankündigung auf der Distutils-Liste :

Microsoft hat ein Compiler-Paket für Python 2.7 veröffentlicht, um die Erstellung und Verteilung von C-Erweiterungsmodulen unter Windows zu erleichtern. Der Microsoft Visual C++ Compiler für Python 2.7 (auch bekannt als VC9) ist erhältlich bei: http://aka.ms/vcpython27

Dieses Paket enthält alle Werkzeuge und Header, die benötigt werden, um C-Erweiterungsmodule für Python 2.7 32-bit und 64-bit zu erstellen (beachten Sie, dass einige Erweiterungsmodule Abhängigkeiten von Drittanbietern wie OpenSSL oder libxml2 benötigen, die nicht enthalten sind). Andere Versionen von Python, die mit Visual C++ 2008 erstellt wurden, werden ebenfalls unterstützt, daher ist "Python 2.7" nur Werbung - es funktioniert auch mit 2.6 und 3.2.

Beachten Sie, dass Sie Folgendes benötigen setuptools 6.0 oder neuere Version installiert sein (aufgeführt in den Systemanforderungen auf der Download-Seite). Das Projekt, das Sie installieren, muss Folgendes verwenden setuptools.setup() , nicht distutils oder die automatische Erkennung wird nicht funktionieren.

Microsoft hat erklärt, dass sie die URL stabil halten wollen, so dass automatisierte Skripte sie leicht referenzieren können.

55voto

fpessoa Punkte 829

Ich hatte gerade dasselbe Problem, also erzähle ich meine Geschichte hier, in der Hoffnung, dass sie jemand anderem mit denselben Problemen hilft und ihm die paar Stunden erspart, die ich gerade verbracht habe:

Ich habe mingw (g++ (GCC) 4.6.1) und python 2.7.3 in einer Windows 7 Box und ich versuche PyCrypto zu installieren.

Alles begann mit dieser Fehlermeldung bei der Ausführung von setup.py install:

error: Unable to find vcvarsall.bat

Einfach gelöst, nachdem ich den Fehler gegoogelt hatte, indem ich mingw als Compiler der Wahl angab:

setup.py install build --compiler=mingw32

Das Problem ist, dass ich dann einen anderen Fehler bekam:

configure: error: cannot run C compiled programs.

Es stellte sich heraus, dass mein Antivirenprogramm die Ausführung einer frisch kompilierten .exe-Datei blockierte. Ich habe einfach den "residenten Schutz" des Antivirenprogramms deaktiviert und bin zum nächsten Fehler übergegangen:

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

Damit ist das Problem gelöst: "Installieren Sie entweder eine etwas ältere Version von MinGW, oder editieren Sie distutils \cygwinccompiler.py in Ihrem Python-Verzeichnis, um alle Instanzen von -mno-cygwin zu entfernen." (aus aquí )

Jetzt kann ich endlich anfangen zu arbeiten.

23voto

YOU Punkte 113320

Es sieht so aus, als ob es nach VC-Compilern sucht, also könnten Sie versuchen, den Compilertyp mit -c mingw32 da Sie über msys

python setup.py install -c mingw32

20voto

user1592380 Punkte 29943

Ich habe Python 2.73 und Windows 7. Die Lösung, die bei mir funktioniert hat, war:

  1. Bin-Verzeichnis von mingw32 zur Umgebungsvariable hinzugefügt: append PATH con C:\programs\mingw\bin;
  2. Erstellt distutils.cfg gelegen bei C:\Python27\Lib\distutils\distutils.cfg enthalten:

    [build]
    compiler=mingw32

Um damit umzugehen, dass MinGW das Flag -mno-cygwin nicht mehr erkennt, entfernen Sie das Flag in C:\Python27\Lib\distutils\cygwincompiler.py Zeile 322 bis 326, so dass es wie folgt aussieht:

  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))

15voto

Christian Long Punkte 8218

Blick in die setup.py Datei des Pakets, das Sie installieren möchten. Wenn es ein älteres Paket ist, importiert es möglicherweise distutils.core.setup() statt setuptools.setup() .

Ich hatte (im Jahr 2015) mit einer Kombination dieser Faktoren zu kämpfen:

  1. Der Microsoft Visual C++ Compiler für Python 2.7 von http://aka.ms/vcpython27

  2. Ein älteres Paket, das die distutils.core.setup()

  3. Versuchen zu tun python setup.py build statt der Verwendung von pip .

Wenn Sie eine neuere Version von pip verwenden, wird es das Paket zwingen (monkeypatch), setuptools zu verwenden, selbst wenn sein setup.py Aufrufe für distutils. Wenn Sie jedoch pip nicht verwenden und stattdessen nur python setup.py build verwendet der Erstellungsprozess distutils.core.setup() das den Installationsort des Compilers nicht kennt.


Lösung

Schritt 1: Öffnen Sie die entsprechende Visual C++ 2008-Eingabeaufforderung

Öffnen Sie das Startmenü oder den Startbildschirm und suchen Sie nach "Visual C++ 2008 32-bit Command Prompt" (wenn Ihr Python 32-bit ist) oder "Visual C++ 2008 64-bit Command Prompt" (wenn Ihr Python 64-bit ist). Führen Sie sie aus. Die Eingabeaufforderung sollte in der Titelleiste Visual C++ 2008 ... anzeigen.

Schritt 2: Umgebungsvariablen festlegen

Setzen Sie diese Umgebungsvariablen in der Eingabeaufforderung, die Sie gerade geöffnet haben.

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

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

Schritt 3: Bauen und installieren

cd zu dem Paket, das Sie bauen wollen, und führen Sie python setup.py build entonces python setup.py install . Wenn Sie in eine virtuelle Umgebung installieren möchten, aktivieren Sie diese vor der Erstellung.

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