it-swarm.com.de

Fehler: vcvarsall.bat konnte nicht gefunden werden

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

pip install dulwich

Aber ich bekomme eine kryptische Fehlermeldung:

error: Unable to find vcvarsall.bat

Das gleiche 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
840
okada

Update : Kommentare weisen darauf hin, dass die Anweisungen hier gefährlich sein können. Verwenden Sie die Visual C++ 2008 Express Edition oder den speziell entwickelten Microsoft Visual C++ - Compiler für Python ( Details ) und NOT mit der ursprünglichen Antwort unten. Die ursprüngliche Fehlermeldung bedeutet, dass die erforderliche Version von Visual C++ nicht installiert ist.


Für Windows-Installationen:

Beim Ausführen von setup.py für Paketinstallationen sucht Python 2.7 nach einem installierten Visual Studio 2008. Sie können Python überlisten, um ein neueres Visual Studio zu verwenden, indem Sie den richtigen Pfad in der Umgebungsvariablen VS90COMNTOOLS festlegen bevor Sie setup.py aufrufen.

Führen Sie den folgenden Befehl basierend auf 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 unten erwähnt, funktioniert diese Antwort wahrscheinlich nicht, wenn Sie versuchen, python Module zu kompilieren.

Weitere Informationen finden Sie unter Erstellen von lxml für Python 2.7 unter Windows .

682
fmuecke

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 auf C:\programs\mingw\ installiert
  3. Fügen Sie das bin-Verzeichnis von mingw32 zu Ihrer Umgebungsvariablen hinzu: Fügen Sie c:\programs\MinGW\bin; an PATH an
  4. Bearbeiten (erstellen, falls nicht vorhanden) distutils.cfg Datei, die sich unter C:\Python26\Lib\distutils\distutils.cfg befindet:

    [build]
    compiler=mingw32
    
  5. Führen Sie nun easy_install.exe amara aus.

Stellen Sie sicher, dass die Umgebung eingestellt ist, indem Sie einen neuen cmd.exe öffnen.

225
ninMonkey

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

221
VolodymyrB

Wenn Sie mit Visual Studio C++ kompilieren möchten, anstatt mingw ...

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

    Es ist wichtig , die entsprechende Version des Visual C++ - Compilers zu verwenden, mit dem Python seit distilutils kompiliert wurde = 's get_build_version verhindert das Mischen von Versionen ( laut 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] So passen Sie die interne VC++ - Version an die entsprechende Visual Studio-Version an:

    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

    Laden Sie Visual Studio C++ 2008 Express Edition für nur die 32-Bit-Compiler herunter.

    Für die 64-Bit-Compiler[2][3], Download 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 bei der Installation von SDK-Tools zu sparen, die Sie ansonsten 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 dies der Fall ist, laden Sie Visual C++ 2010 SP1-Compiler-Update herunter.

    Hinweise für Visual Studio C++ 2015

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

    Hinweise für Visual Studio C++ 2017

    Wenn Sie die Visual Studio-IDE nicht benötigen, laden Sie Build Tools for Visual Studio 2017 herunter.

    Vorschlag : Wenn Sie sowohl eine 32-Bit- als auch eine 64-Bit-Installation von Python haben, können Sie auch verwenden. virtualenv um separate Python Umgebungen zu erstellen, so dass Sie die eine oder die andere gleichzeitig verwenden können, ohne sich mit Ihrem Pfad herumschlagen zu müssen, um zu entscheiden, welche Python Version verwendet werden soll.

Laut @ srodriguex können Sie möglicherweise das manuelle Laden der Batch-Datei überspringen (Schritte 4 bis 6), indem Sie stattdessen einige Batch-Dateien in das Verzeichnis kopieren, in dem Python sucht. diese Antwort . Wenn das nicht funktioniert, sind hier die folgenden Schritte, die ursprünglich für mich gearbeitet haben.

  1. Öffne einen cmd.exe

  2. Bevor Sie versuchen, etwas zu installieren, für das C-Erweiterungen erforderlich sind, führen Sie die folgende Batchdatei aus, um die Umgebung des VC++ - Compilers in die Sitzung zu laden (d. H. Umgebungsvariablen, Pfad zum Compiler usw.).

    Ausführen:

    • 32-Bit-Compiler:

      Hinweis : Bei 32-Bit-Windows-Installationen wird nur C:\Program Files\ 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 befinden sich in Program Files (x86). Frag mich nicht warum.
      Außerdem, wenn Sie sich fragen, was der Unterschied zwischen vcvars64.bat und vcvarsx86_AMD64.bat oder, was noch wichtiger ist, der Unterschied zwischen AMD64 und x86_AMD64 ist, sind die ersteren für den Muttersprachler 64-Bit-Compiler-Tools und letztere sind die 64-Bit-Cross-Compiler, die unter einer 32-Bit-Windows-Installation ausgeführt werden können.

    Update:
    Wenn aus irgendeinem Grund error: ... was unexpected at this time. angezeigt wird, wobei ... aus einer Reihe von Zeichen besteht, müssen Sie sicherstellen, dass Ihre Pfadvariable keine fremden Zeichen wie zusätzliche Anführungszeichen oder Streuzeichen enthält Figuren. Die Batch-Datei kann Ihren Sitzungspfad nicht aktualisieren, wenn er überhaupt keinen Sinn ergibt.

  3. Wenn dies erfolgreich war, sollten Sie abhängig von der Version von VC++ und dem ausgeführten Befehl eine der folgenden Meldungen erhalten:

    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. Führen Sie nun das Setup über python setup.py install oder pip install pkg-name aus.

  5. Hoffe und drücke die Daumen, dass die Planeten richtig ausgerichtet sind, damit VC++ zusammenarbeitet.

157
Josh Bowden

Was ist los? Python -Module können in C oder C++ geschriebener Teil (normalerweise für Geschwindigkeit) sein. Wenn Sie versuchen, ein solches Paket mit Pip (oder setup.py) zu installieren, muss dieses C/C++ aus dem Quellcode kompiliert werden. Im Auslieferungszustand geht Pip unverschämt davon aus, dass Sie den Compiler Microsoft Visual C++ installiert haben. Wenn Sie es nicht haben, sehen Sie diese kryptische Fehlermeldung "Fehler: vcvarsall.bat kann nicht gefunden werden".

Die vorgeschriebene Lösung besteht darin, einen C/C++ - Compiler zu installieren, entweder Microsoft Visual C++ oder MinGW (ein Open-Source-Projekt). Die Installation und Konfiguration ist jedoch äußerst schwierig. (Edit 2014: Microsoft hat einen speziellen C++ - Compiler für Python 2.7 veröffentlicht.)

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


Wenn auch Sie denken, dass "Fehler: vcvarsall.bat kann nicht gefunden werden" eine lächerlich kryptische und nicht hilfreiche Meldung ist, kommentieren Sie den Fehler bitte unter http://bugs.python.org/issue294 , um ihn zu ersetzen mit einer hilfreicheren und benutzerfreundlicheren Nachricht.

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

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

Unter https://stackoverflow.com/a/13445719/284795 können Sie einen längeren Artikel über die Verpackung von Python lesen

71
Colonel Panic

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

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

Microsoft Visual C++ Compiler für Python 2.7

http://aka.ms/vcpython27

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

Wenn Sie eine Python interaktive Eingabeaufforderung starten oder sys.version drucken, suchen Sie nach der MSC -Versionszeichenfolge. Wenn es sich um MSC v.1500 handelt, können Sie dieses Tool verwenden.

Aus dem rsprüngliche Ankündigung zur Distillil-Liste :

Microsoft hat ein Compiler-Paket für Python 2.7 veröffentlicht, damit Benutzer ihre C-Erweiterungsmodule einfacher unter Windows erstellen und verteilen können. Der Microsoft Visual C++ - Compiler für Python 2.7 (a.k.a. VC9) ist verfügbar unter: http://aka.ms/vcpython27

Dieses Paket enthält alle Tools und Header, die zum Erstellen von C-Erweiterungsmodulen für Python 2.7 32-Bit und 64-Bit erforderlich sind. . Andere Versionen von Python, die mit Visual C++ 2008 erstellt wurden, werden ebenfalls unterstützt. "Python 2.7" ist also nur Werbung - es funktioniert problemlos mit 2.6 und 3.2.

Beachten Sie, dass setuptools 6.0 oder neuer installiert sein muss (aufgeführt in den Systemanforderungen auf der Download-Seite). Das Projekt, das Sie installieren, muss setuptools.setup(), nicht distutils verwenden, sonst funktioniert die automatische Erkennung nicht.

Microsoft hat erklärt, dass die URL stabil bleiben soll, damit automatisierte Skripte problemlos darauf verweisen können.

63
Martijn Pieters

Ich hatte gerade das gleiche Problem, also erzähle ich meine Geschichte hier in der Hoffnung, dass es jemand anderem mit den gleichen Problemen hilft und ihnen 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 versuche, PyCrypto zu installieren.

Alles begann mit diesem Fehler, als setup.py installiert wurde:

error: Unable to find vcvarsall.bat

Leicht zu lösen, nachdem der Fehler gegoogelt wurde, indem mingw als Compiler der Wahl angegeben wurde:

setup.py install build --compiler=mingw32

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

configure: error: cannot run C compiled programs.

Es stellte sich heraus, dass mein Antivirus die Ausführung einer frisch kompilierten EXE-Datei blockierte. Ich habe gerade das Antivirenprogramm "Resident Shield" 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

Dies löste das Problem: "Installieren Sie entweder eine etwas ältere Version von MinGW oder bearbeiten Sie distutils\cygwinccompiler.py in Ihrem Python -Verzeichnis, um alle Instanzen von -mno-cygwin zu entfernen." (von hier )

Jetzt kann ich endlich anfangen zu arbeiten.

54
fpessoa

Sieht so aus, als würde es nach VC Compilern suchen, also könnten Sie versuchen, den Compilertyp mit -c mingw32 zu erwähnen, da Sie msys haben

python setup.py install -c mingw32
23
YOU

Ich habe python 2.73 und Windows 7. Die Lösung, die für mich funktionierte, war:

  1. Das bin-Verzeichnis von mingw32 wurde zur Umgebungsvariablen hinzugefügt: füge PATH mit C:\programs\mingw\bin; an
  2. Erstellt distutils.cfg unter C:\Python27\Lib\distutils\distutils.cfg mit:

    [build]
    compiler=mingw32
    

Wenn MinGW das Flag -mno-cygwin nicht mehr erkennt, entfernen Sie das Flag in Zeile 322 bis 326 von C:\Python27\Lib\distutils\cygwincompiler.py.

  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
user61629

Suchen Sie in der Datei setup.py des Pakets, das Sie installieren möchten. Wenn es sich um ein älteres Paket handelt, wird möglicherweise distutils.core.setup() anstelle von setuptools.setup() importiert.

Darauf bin ich (2015) mit einer Kombination dieser Faktoren gestoßen:

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

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

  3. Es wurde versucht, python setup.py build auszuführen, anstatt pip zu verwenden.

Wenn Sie eine neuere Version von pip verwenden, wird das Paket gezwungen (monkeypatch), setuptools zu verwenden, auch wenn sein setup.py distutils aufruft. Wenn Sie jedoch kein pip verwenden und stattdessen nur python setup.py build ausführen, 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-Eingabeaufforderung" (wenn Sie python mit 32 Bit verwenden) oder "Visual C++ 2008 - 64-Bit-Eingabeaufforderung" (wenn Sie dies möchten) python ist 64-Bit). Starte es. Die Eingabeaufforderung sollte Visual C++ 2008 ... in der Titelleiste anzeigen.

Schritt 2: Umgebungsvariablen setzen

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

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

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

Schritt 3: Erstellen und installieren

cd zu dem Paket, das Sie erstellen möchten, und führen Sie python setup.py build und dann python setup.py install aus. Wenn Sie in eine virtuelle Umgebung installieren möchten, müssen Sie diese vor dem Erstellen aktivieren.

16
Christian Long

Vielleicht kann sich jemand dafür interessieren, folgendes hat bei mir für das Paket py2exe funktioniert. (Ich habe Windows 7 64-Bit und portables python 2.7, Visual Studio 2005 Express mit Windows SDK für Windows 7 und .NET Framework 4)

set VS90COMNTOOLS=%VS80COMNTOOLS%

dann:

python.exe setup.py install
9
Stefano Fenu

Ich habe fast zwei Tage damit verbracht, herauszufinden, wie dieses Problem in meiner python 3.4 64-Bit-Version behoben werden kann: Python 3.4.3 (v3.4.3: 9b73f1c3e601, 24. Februar 2015, 22:44 : 40) [MSC v.1600 64 Bit (AMD64)] auf Win32

Lösung 1, schwer: (bevor Sie dies lesen, lesen Sie zuerst Lösung 2 unten) Schließlich hat mir Folgendes geholfen:

  1. installiere Visual C++ 2010 Express
  2. installiere Microsoft Windows SDK v7.1 für Windows 7
  3. erstellen Sie manuell die Datei vcvars64.bat in C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64, die CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 oder einen anderen Pfad enthält, je nachdem, wo Sie Ihren installiert haben
  4. (Dies scheint optional zu sein.) Installieren Sie Microsoft Visual Studio 2010 Service Pack 1 zusammen mit Microsoft Visual C++ 2010 Service Pack 1 Compiler Update für das Windows SDK 7.1
  5. danach habe ich versucht, pip install numpy, aber die folgende Fehlermeldung erhalten:

    File "numpy\core\setup.py", line 686, in get_mathlib_info
    raise RuntimeError("Broken toolchain: cannot link a simple C program")
    RuntimeError: Broken toolchain: cannot link a simple C program
    

    Ich habe mfinfo in C:\Python34\Lib\distutils\msvc9compiler.py in None geändert https://stackoverflow.com/a/23099820/4383472

  6. nach dem Befehl pip install numpy hat mein Avast Antivirus versucht, in den Installationsprozess einzugreifen, aber ich habe ihn schnell deaktiviert

Es hat sehr lange gedauert - einige Minuten, bis Numpy kompiliert war. Ich dachte sogar, dass ein Fehler aufgetreten ist, aber schließlich war alles in Ordnung.

Lösung 2, einfach: (Ich weiß, dass dieser Ansatz bereits in einer hoch bewerteten Antwort erwähnt wurde , Aber lassen Sie mich wiederholen, da es wirklich einfacher ist.) Nachdem ich all diese Arbeiten durchgearbeitet habe, habe ich verstanden, dass der beste Weg für mich darin besteht, bereits vorkompilierte Binärdateien von http: //www.lfd.uci zu verwenden. edu/~ gohlke/pythonlibs/ in zukunft. Es ist sehr unwahrscheinlich, dass ich jemals ein Paket (oder eine Version eines Pakets) benötige, das diese Site nicht enthält. Der Installationsprozess ist auf diese Weise auch viel schneller. So installieren Sie beispielsweise numpy:

  1. laden Sie numpy‑1.9.2+mkl‑cp34‑none‑win_AMD64.whl (falls Sie Python 3.4 64-Bit haben) von dieser Site herunter
  2. installieren Sie es in der Eingabeaufforderung oder in der PowerShell mit pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_AMD64.whl (oder dem vollständigen Pfad zur Datei, je nachdem, wie die Eingabeaufforderung geöffnet wird).
8
Bad

Ich bin auf dieses Problem gestoßen, als ich versucht habe, numpy library auf meinem python 3.5 zu installieren. Die Lösung besteht darin, VS2015 zu installieren. Ich hatte VS2008, 2012, 2013, von denen keiner mit python 3.5 kompatibel ist. Anscheinend ist eine neuere Version von python von neueren Versionen von VS abhängig.

Stellen Sie außerdem sicher, dass C++ Common Tools mit Visual Studio installiert werden.

enter image description here

7
D.G.

Ich wollte pysph unter Windows 10 unter Python 2.7 ausführen und habe vcvarsall.bat nicht gefunden (von distutils)

Meine Lösung war die folgende:

Installieren Sie Microsoft Visual C++ für Python 2.7 (wie von @Michael vorgeschlagen)

Unter Windows 10 wurde es installiert in (mein Benutzername ist Andreas):

C:\Users\Andreas\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

Setzen Sie die Umgebungsvariable VS90COMNTOOLS auf den Installationspfad von Visual C++ für Python 2.7 (siehe oben).

Wenn es immer noch nicht funktioniert, dann ändere es im Modul

C:/Python27/lib/distutils

die Datei msvc9compiler.py. Finden Sie darin die Funktion find_vcvarsall und führen Sie folgende Änderung durch.

Ersetzen Sie die Zeile:

productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")

mit

productdir = os.path.join(toolsdir)

Hier befindet sich in meinem Fall vcvarsall.bat (überprüfen Sie, wo sich vcvarsall.bat in Ihrer Installation befindet).

7
chiefenne

Sie können die kostenlose Visual C++ 2008 Express Edition von http://go.Microsoft.com/?linkid=7729279 herunterladen, mit der die Umgebungsvariable VS90COMNTOOLS während der Installation festgelegt und daher mit einem kompatiblen Compiler erstellt wird.

Wie @PiotrDobrogost in einem Kommentar erwähnte, geht seine Antwort auf diese andere Frage auf Details darüber ein, warum Visual C++ 2008 das Richtige zum Erstellen ist. Dies kann sich jedoch ändern, wenn der Windows-Build von Python auf neuere Versionen umgestellt wird von Visual Studio: Erstellen von lxml für Python 2.7 unter Windows

6
Eric Smith

Ich habe alle oben genannten Antworten ausprobiert und festgestellt, dass sie alle nicht funktionieren. Vielleicht habe ich Windows 8 verwendet und Visual Studio 2012 installiert. In diesem Fall tun Sie Folgendes.

Die Datei vcvarsall.bat befindet sich hier: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

Wählen Sie einfach die Datei aus und kopieren Sie sie.

Dann gehen Sie in dieses Verzeichnis: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

und fügen Sie die Datei ein. Und dann sollte alles in Ordnung sein.

6
Games Brainiac

Ich hatte dieses Problem mit Python 3.4.1 unter Windows 7 x64 , und leider hatten die Pakete, die ich brauchte, keine geeignete exe oder Räder, die ich verwenden konnte . Für dieses System sind einige Problemumgehungen erforderlich, die im Folgenden beschrieben werden (und TLDR unten ).

Anhand der Informationen in Jaxrtechs Antwort oben stellte ich fest, dass ich Visual Studio C++ 2010 (sys.version return MSC v.1600) benötigte, und installierte Visual C++ 2010 Express über den Link in seiner Antwort http://go.Microsoft.com/?linkid=9709949 . Ich habe alles mit Updates installiert, aber wie Sie weiter unten lesen können, war dies ein Fehler. Zu diesem Zeitpunkt sollte nur die Originalversion von Express installiert werden (keine Aktualisierung).

vcvarsall.bat war jetzt vorhanden, aber es gab einen neuen Fehler beim Installieren des Pakets, query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']. Es gibt andere Fragen zum Stackoverflow mit diesem Fehler, z. B. Fehler beim Erstellen/Installieren des C-Moduls für Python 2.7

Aus dieser Antwort ging hervor, dass 2010 Express nur 32-Bit-Compiler installiert. Um 64-Bit-Compiler (und andere) zu erhalten, müssen Sie Windows 7.1 SDK installieren. Siehe http://msdn.Microsoft.com/en-us/windowsserver/bb980924.aspx

Dies würde jedoch nicht für mich installiert, und das Installationsprogramm gab den Fehler installation failed with return code 5100 zurück. Ich habe die Lösung unter folgendem Link gefunden: http://support.Microsoft.com/kb/2717426 . Kurz gesagt, wenn neuere Versionen von x86- und x64-Redistributable für Microsoft Visual C++ 2010 installiert sind, treten Konflikte mit denen im SDK-Installationsprogramm auf und müssen zuerst deinstalliert werden.

Das SDK wurde dann installiert, aber ich bemerkte, dass vcvars64.bat weder in C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin noch in seinen Unterordnern vorhanden war. vcvarsall.bat führt die vcvars64-Batchdatei aus. Ohne diese Datei würde das python -Paket immer noch nicht installiert (ich habe den zu diesem Zeitpunkt angezeigten Fehler vergessen).

Ich habe dann hier einige Anweisungen gefunden: http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 Nach den Anweisungen hatte ich Express und 7.1 SDK bereits installiert, also installiert SDK 7.1 SP1 und korrigierte die fehlende Headerdatei. Ich habe dann manuell vcvars64.bat mit dem Inhalt CALL setenv /x64 erstellt. Ich werde all diese Anweisungen hier einfügen, damit sie nicht verloren gehen.

Schritt 1 ist das Herunterladen von Visual Studio Express 2010.

http://www.Microsoft.com/visualstudio/en-us/products/2010-editions/express ist ein guter Anfang. Laden Sie das Installationsprogramm herunter und führen Sie es aus (vc_web.exe). Sie benötigen keinen zusätzlichen Download für SQL 2008.

Sie benötigen außerdem das Windows SDK (derzeit 7.1) für die 64-Bit-Compiler - es sei denn, Sie möchten nur 32-Bit-Builds ausführen, die nicht vollständig unterstützt werden.

http://www.Microsoft.com/en-us/download/details.aspx?id=8279 ist ein guter Ausgangspunkt zum Herunterladen dieser Datei - Sie möchten winsdk_web.exe ausführen, wenn Sie sie herunterladen !

Die Standardinstallation hier ist in Ordnung.

Laden Sie abschließend das Windows SDK 7.1 SP1-Update herunter und installieren Sie es: http://www.Microsoft.com/en-us/download/details.aspx?id=4422

Und um fehlende Header-Datei zu beheben, VS2010 SP1. http://www.Microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

Und, verdammt noch mal, korrigieren Sie die fehlende Batch-Datei für VS2010 Express. Das wird geradezu absurd.

Erstellen Sie unter C:\Programme (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64 "vcvars64.bat" mit den folgenden Angaben (Sie müssen als Administrator ausgeführt werden):

CALL setenv/x64

Mein python -Paket wurde immer noch nicht installiert (Fehler kann nicht zurückgerufen werden). Ich fand dann einige Anweisungen (siehe unten) zur Verwendung der speziellen SDK 7.1-Eingabeaufforderung: https://mail.python.org/pipermail/distutils-sig/2012-February/018300.html

Macht nichts aus dieser Frage. Jemand hier hat diesen Punkt im Menü bemerkt: Start-> Alle Programme-> Microsoft Windows SDK v7.1 -> Windows SDK 7.1-Eingabeaufforderung

Dadurch wird ein Stapeljob ausgeführt, mit dem eine Arbeitsumgebung für den Compiler eingerichtet wird. An dieser Eingabeaufforderung können Sie "setup.py build" oder "setup.py install" eingeben.

Ich habe die Windows SDK 7.1-Eingabeaufforderung wie angewiesen geöffnet und easy_install für das Paket python ausgeführt. Und endlich Erfolg!


TLDR;

  1. Installieren Sie Visual Studio Express 2010 (vorzugsweise ohne aktualisierte Redistributables oder SQL Server).
  2. Installieren Sie Windows 7.1 SDK
  3. Installieren Sie das Update für SDK 7.1 SP1 und die VS2010 SP1-Headerdatei (dieser Schritt ist möglicherweise nicht erforderlich).
  4. Manuelles Erstellen von C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64\vcvars64.bat mit Inhalt CALL setenv /x64
  5. Start-> Alle Programme-> Microsoft Windows SDK v7.1 -> Windows SDK 7.1-Eingabeaufforderung zum Öffnen einer speziellen x64-Eingabeaufforderung, die dann mit python/easy_install/pip/etc (einschließlich der in virtual_envs) verwendet werden kann.
6
neRok

Die folgenden Schritte haben dieses Problem für mich behoben. Ich habe versucht, ein Setup mit Cython-Erweiterung zu erstellen.

  1. Installieren Sie Microsoft Visual C++ Compiler für Python 2.7
  2. Das Standardverzeichnis für die Installation lautet @ C:\Benutzer\PC-Benutzer\AppData\Local\Programs\Common\Microsoft\Visual C++ für Python Dies könnte das Problem tatsächlich beheben, testen Sie es einmal, bevor Sie fortfahren.
  3. Wenn dies fehlschlägt, überprüfen Sie, wo sich in VC++ die Datei python vcvarsall.bat befindet
  4. Öffnen Sie die Datei msvc9compiler.py des Pakets distutils im Editor.
  5. In meiner Box war dies @ C:\Anaconda2\Lib\distutils\msvc9compiler.py find_vcvarsall Funktion in dieser Datei. Ermitteln Sie die Version von VC, indem Sie das Versionsargument ausdrucken. Für Python 2.7 ist es wahrscheinlich 9.0
  6. Erstellen Sie nun eine Umgebungsvariable VS90COMNTOOLS, die auf C:\Benutzer\PC-Benutzer\AppData\Local\Programs\Common\Microsoft\Visual C++ für Python\9.0\VC\bin verweist
  7. Aus irgendeinem Grund erwartet distutils, dass sich die Datei vcvarsall.bat in VC dir befindet, aber VC++ für python tools hat sie im Stammverzeichnis von 9.0. Um dies zu beheben, entfernen Sie "VC" aus der path.join (ungefähr um die Linie 247)

    #productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") productdir = os.path.join(toolsdir, os.pardir, os.pardir)

Die obigen Schritte haben das Problem für mich behoben.

4
Riyas Deen

Der einfachste Weg, dies 2016 zu lösen, ist die Installation von Chocolatey und anschließend des Pakets vcpython27. Open Powershell:

> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
> choco install python2 -y
> choco install vcpython27 -y
3
Chris S

Ist Microsoft Visual C++ Compiler für Python 2.7 unter http://www.Microsoft.com/en-us/download/details.aspx?id=44266 keine Lösung?

3
Michael

Ich habe viele Lösungen ausprobiert, aber nur eine hat für mich funktioniert, die Installation von Microsoft Visual Studio 2008 Express C++.

Ich habe dieses Problem mit einem Python 2.7-Modul in C (yEnc, das andere Probleme mit MS VS hat). Beachten Sie, dass Python 2.7 mit MS VS 2008-Version erstellt wurde, nicht mit 2010!

Trotz der Tatsache, dass es kostenlos ist, ist es ziemlich schwer zu finden, da MS VS 2010 bewirbt. Dennoch funktionieren die offiziellen sehr direkten Links von MSDN immer noch: check https://stackoverflow.com/a/15319069/2227298 für Download-Links.

3
KrisWebDev

Wenn du mingw installiert hast

pip install --global-option build_ext --global-option --compiler=mingw32 packagename

funktioniert und erzwingt, dass pip den mingw-Compiler anstelle des von Microsoft verwendet. Siehe hier https://github.com/pypa/pip/issues/18 für Details (letzter Beitrag).

3
Nicolas78

Ich habe das gleiche Problem und habe es im Moment gelöst.

"Google" hat mir mitgeteilt, dass ich "Microsoft Visual C++ Compiler für Python 2.7" installieren muss. Ich installiere nicht nur das Tool, sondern auch Visual C++ 2008 Reditributable, aber es hat nicht geholfen. Ich habe dann versucht, Visual C++ 2008 Express Edition zu installieren. Und das Problem ist weg!

Versuchen Sie einfach, Visual C++ 2008 Express Edition zu installieren!

2
Vova

das Aufrufen von import setuptools führt zum Affen-Patch distutils, um die Kompatibilität mit Visual Studio zu erzwingen. Das manuelle Aufrufen von vcvars32.bat richtet die virtuelle Umgebung ein und verhindert andere häufige Fehler, die der Compiler auslöst. Für VS 2017 befindet sich die Datei unter

"C:\Programme (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"

Hier ist das Setup-Skript, mit dem ich schnell .pyx-Dateien in .pyd kompiliere: (Hinweis: Es verwendet das 3rd-Party-Modul send2trash

# cython_setup.py
import sys, os, time, platform, subprocess
from setuptools import setup, find_packages
from Cython.Build import cythonize
from traceback import format_exc

# USAGE:
#
#   from cython_setup import run
#   run(pyx_path)

# vcvars = r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"

# NOTE: to use visual studio 2017 you must have setuptools version 34+
vcvars = r"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars32.bat"


def _build_ext():
    try:
        pyx_path = sys.argv.pop(-1)
        pyx_path = os.path.abspath(pyx_path)
        if not os.path.exists(pyx_path):
            raise FileNotFoundError(f"{pyx_path} does not exist")
        project_name = sys.argv.pop(-1)
        os.chdir(os.path.abspath(os.path.dirname(pyx_path)))

        print("cwd: %s" % os.getcwd())
        print(os.path.abspath("build"))
        setup(
            name=project_name,
            # cmdclass = {'build_ext': build_ext},
            packages=find_packages(),
            # ext_modules=cythonize(extensions)
            ext_modules=cythonize(pyx_path,
                                  compiler_directives={'language_level': 3, 'infer_types': True, 'binding': False},
                                  annotate=True),
            # include_dirs = [numpy.get_include()]
            build_dir=os.path.abspath("build")
        )
    except:
        input(format_exc())


def retry(func):
    def wrapper(*args, **kw):
        tries = 0
        while True:
            try:
                return func(*args, **kw)
            except Exception:
                tries += 1
                if tries > 4:
                    raise
                time.sleep(0.4)

    return wrapper


@retry
def cleanup(pyx_path):
    from send2trash import send2trash
    c_file = os.path.splitext(pyx_path)[0] + ".c"
    if os.path.exists(c_file):
        os.remove(c_file)

    if os.path.exists("build"):
        send2trash("build")


def move_pyd_files(pyx_path):
    pyx_dir = os.path.dirname(pyx_path)
    build_dir = os.path.join(pyx_dir, "build")
    if not os.path.exists(build_dir):
        raise RuntimeError(f"build_dir {build_dir} did not exist....")
    found_pyd = False
    for top, dirs, nondirs in os.walk(build_dir):
        for name in nondirs:
            if name.lower().endswith(".pyd") or name.lower().endswith(".so"):
                found_pyd = True
                old_path = os.path.join(top, name)
                new_path = os.path.join(pyx_dir, name)
                if os.path.exists(new_path):
                    print(f"removing {new_path}")
                    os.remove(new_path)
                print(f"file created at {new_path}")
                os.rename(old_path, new_path)
    if not found_pyd:
        raise RuntimeError("Never found .pyd file to move")

def run(pyx_path):
    """
    :param pyx_path:
    :type pyx_path:
    :return: this function creates the batch file, which in turn calls this module, which calls cythonize, once done
    the batch script deletes itself... I'm sure theres a less convoluted way of doing this, but it works
    :rtype:
    """
    try:
        project_name = os.path.splitext(os.path.basename(pyx_path))[0]
        run_script(project_name, os.path.abspath(pyx_path))
    except:
        input(format_exc())


def run_script(project_name, pyx_path):
    dirname = os.path.dirname(pyx_path)
    # ------------------------------
    os.chdir(dirname)
    if os.path.exists(vcvars):
        #  raise RuntimeError(
        # f"Could not find vcvars32.bat at {vcvars}\nis Visual Studio Installed?\nIs setuptools version > 34?")
        subprocess.check_call(f'call "{vcvars}"', Shell=True)

    cmd = "python" if platform.system() == "Windows" else "python3"
    subprocess.check_call(f'{cmd} "{__file__}" build_ext "{project_name}" "{pyx_path}"', Shell=True)
    move_pyd_files(pyx_path)
    cleanup(pyx_path)


if len(sys.argv) > 2:
    _build_ext()
2
user2682863

Ich weiß nicht, ob es zu spät ist, aber ich habe Microsoft Visual C++ Compiler für Python 2.7 gefunden

Die typische Fehlermeldung, die Sie erhalten, wenn Sie dieses Compiler-Paket benötigen, lautet vcvarsall.bat kann nicht gefunden werden

Hoffe das hilft!

2
mkamioner

Mit Python 3.4 besteht die Abhängigkeit in Visual Studio 2010. Durch die Installation von Visual C++ 2010 Express wurde das Problem für mich behoben.

Es in die VS 2008- oder 2013-Installationen zu versetzen, die ich zufällig hatte, hat nicht funktioniert.

1
gmjonker

Ich hatte den gleichen Fehler (den ich dumm und nicht wirklich hilfreich finde, was Fehlermeldungen angeht) und hatte weiterhin Probleme, obwohl ein C-Compiler verfügbar war.

Überraschenderweise funktionierte ich nur mit Aktualisierung von Pip und Setuptools auf die neueste Version. Hoffe das hilft jemand anderem da draußen.

1
cbrendanprice

Die Antwort von @monkey ist eine der richtigen, aber sie ist unvollständig.

Wenn Sie MinGW verwenden möchten, sollten Sie C, C++ und andere während des MinGW-Installationsprozesses vorgeschlagene Entwicklungstools auswählen, um auch "make.exe" zu erhalten.

Außerdem muss der Pfad in der Umgebungsdatei auf make.exe festgelegt sein.

Um seine Antwort zu vervollständigen, sind hier die Schritte:

  1. Fügen Sie den Umgebungsvariablen das bin-Verzeichnis von mingw32 hinzu
  2. Hänge C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin; an den PFAD an
  3. Bearbeiten Sie die distutils.cfg -Datei unter C:\Python26\Lib\distutils\distutils.cfg (erstellen Sie sie, falls sie nicht vorhanden ist), und geben Sie Folgendes ein:

    [build]
    compiler=mingw32
    

Stellen Sie sicher, dass die Umgebungsvariablen festgelegt sind, indem Sie eine neue cmd.exe öffnen.

1
Olivier N

Installieren Sie dann Visual Studio 2015 Community Edition von https://www.visualstudio.com

für Python 3.4

set VS100COMNTOOLS=%VS140COMNTOOLS% && pip install XX

1
Sergey11g

Eine umfassende Liste der MS VС ++ - Versionen und Installationsvarianten , die offiziell von distutils (und einige von setuptools) und wie man sie benutzt finden Sie unter

https://wiki.python.org/moin/WindowsCompilers

Außerdem wird angegeben, welche VC++ - Version für welche offizielle Win32 Python-Version erforderlich ist. Beachten Sie, dass MinGW nicht offiziell unterstützt wird (Einzelheiten siehe unten).

In Kürze:

  • Für jede Version gibt es eine bestimmte Visual Studio-Version, die sofort einsatzbereit ist.
  • Für eigenständige SDKs ist es im Allgemeinen erforderlich, die Installation über die SDK-Eingabeaufforderung (= Umgebungsvariablen festlegen) auszuführen.
    • Für einige kann diese Anforderung durch eine einmalige Optimierung aufgehoben werden, die keine nachteiligen Nebenwirkungen hat
  • Einige ungewöhnliche VC++ - Versionen werden von setuptools und nicht von distutils unterstützt.
  • MinGW soll "funktionieren", aber nur für x86. - https://bugs.python.org/issue4709 besagt, dass Probleme mit seiner Unterstützung in MinGW selbst liegen und sogar x86 Probleme haben wird, seit Python 3.5.
1
ivan_pozdeev

Sie können easy_install anstelle von pip verwenden, es funktioniert bei mir.

1
Abdul Majeed

schnellste Lösung :

Wenn Sie über Python 3.4.x verfügen, besteht die Lösung darin, einfach VC++ 2010 zu installieren, da es zum Kompilieren verwendet wird.

https://www.visualstudio.com/en-us/downloads#d-2010-express

meine python Version ist MSC v.1600 32 Bit (Intel)] auf Win32

funktionierte gut unter Windows8

1
DmitrySemenov

Wenn Sie pyodbc auf einer Windows-Box installieren möchten, auf der Visual Studio nicht installiert ist , können Sie pyodbc auch manuell mithilfe der Binärdistribution installieren.

Dies ist besonders nützlich, wenn Sie auf dem Computer, mit dem Sie arbeiten, keine Administratorrechte haben und versuchen, ein virtualenv einzurichten.

Schritte:

  1. Laden Sie das neueste Windows-Installationsprogramm von hier (pyodbc-X.X.X.win-Y-py2.7.exe) herunter.
  2. Öffnen Sie das ausführbare Installationsprogramm mit 7-Zip (oder WinRAR oder was auch immer)
  3. Extrahiere pyodbc.pyd und pyodbc-X.X.X-py2.7.Egg-info und platziere sie in [python installation directory or virtualenv]\Lib\site-packages
  4. Es gibt keinen Schritt 4 :)
1
Dane B

Ich habe versucht, alle oben genannten Antworten, aber nicht für mich gearbeitet. Ich habe Windows 10 verwendet und Visual Studio 2010 installiert. In meinem Fall muss vcvars64.bat zu C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64 hinzugefügt werden.

unten ist vcvars64.bat:

CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64

Installieren Sie Microsoft SDK 7.1, wenn Sie es nicht installieren, und führen Sie pip install dulwich erneut aus.

1
xavierzhao

Gehen Sie hier: http://docs.continuum.io/anaconda/install.html#windows-install

Es gibt Anweisungen zur Installation von Anaconda, die eine GUI und eine unbeaufsichtigte Installation eines Großteils der Pakete bereitstellen, die dieses Problem zu verursachen scheinen http://www.scipy.org/ . Mir ist die Lösung für 2.7 hier bekannt https://www.Microsoft.com/en-us/download/details.aspx?id=44266 aber ich habe keine Option für Python 3.4 gesehen. Nach dem Herunterladen und Installieren von Anaconda sollten Sie in der Lage sein, einen Großteil der benötigten Pakete von scipy zu importieren.

Hoffe das hilft einigen Leuten. Ich habe 45 Minuten gebraucht, um Posts und Sites zu durchsuchen.

BEARBEITEN: Ich wollte nur erwähnen, dass es auf der GUI-Seite neben den Betriebssystemsymbolen einen Python34-Link gibt.

1
jakden

Ich hatte den gleichen Fehler, als ich versuchte, pandas in Windows 10 zu installieren. Nachdem ich mehrere Lösungen gesucht hatte, endete ich mit der Verwendung von wheel.

Aktualisieren Sie zunächst pip auf die neueste Version:

easy_install install -U pip

Zweitens Rad installieren:

pip install wheel

Drittens laden Sie die whl-Datei für Ihr Paket herunter und installieren Sie sie:

pip install [xxx].whl

Bisher glaube ich, dass Wheel die beste Möglichkeit ist, Python -Pakete unter Windows zu installieren.

0
Andong Zhan

http://www.stickpeople.com/projects/python/win-psycopg/

Das Installieren der entsprechenden Datei über den obigen Link hat mein Problem behoben.

Erwähnung: Jason Erickson [[email protected]]. Er verwaltet diese Seite ziemlich gut für Windows-Benutzer.

0
Rahul Bali

Ich habe die Anweisungen befolgt http://springflex.blogspot.ru/2014/02/how-to-fix-valueerror-when-trying-to.html . aber nichts ist passiert. Dann habe ich 2010 Visual Studio Express installiert ( http://www.Microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express ) und dabei den Rat befolgt http://blog.python.org/2012/05/recent-windows-changes-in-python-33.html es hat mir geholfen

0
Francuz