webentwicklung-frage-antwort-db.com.de

Compiler Probleme mit pip während der numpy Installation unter Windows 8.1, 7 Enterprise und 7 Home Editions

Ich kann numpy per pip install numpy nicht auf meinem Computer installieren, auf dem Python 3.4 ausgeführt wird, da verschiedene Fehler bei Kompilierungsproblemen auftreten (dies ist nur bei einer 64-Bit-Installation von Python der Fall). 

Dies ist ein Problem, über das ausführlich berichtet wurde und ich hatte eine verwandte Frage , dass vcvarsall.bat nicht gefunden werden konnte. Ich habe dies auf drei verschiedenen sauberen Computern getestet, auf denen Windows 8.1, 7 Enterprise und 7 Home Editions ausgeführt werden, und es wird immer angezeigt. 

Durch die Installation von Visual Studio 2010 Express C++ wird der erste Fehler in der Verknüpfung entfernt - d. H. Vcvarsall.bat kann nicht gefunden werden, es wird jedoch eine nächste Ausnahme mit einem ValueError wie folgt ausgegeben:

  File "C:\Python34\lib\distutils\msvc9compiler.py", line 371, in initialize

    vc_env = query_vcvarsall(VERSION, plat_spec)

  File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall

    raise ValueError(str(list(result.keys())))

ValueError: ['path']

Ich habe dann advice befolgt und die Datei im Diskussionsforum als verlinkt gepatcht, was zu einem KEY_BASE-Fehler geführt hat.

  File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\command\config.py", line 18, in <module>

    from numpy.distutils.mingw32ccompiler import generate_manifest

  File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\mingw32ccompiler.py", line 36, in <module>

    from distutils.msvccompiler import get_build_version as get_build_msvc_version

  File "C:\Python34\lib\distutils\msvccompiler.py", line 638, in <module>

    from distutils.msvc9compiler import MSVCCompiler

  File "C:\Python34\lib\distutils\msvc9compiler.py", line 71, in <module>

    r"v%sA"

  File "C:\Python34\lib\distutils\msvc9compiler.py", line 67, in <listcomp>

    WINSDK_PATH_KEYS = [KEY_BASE + "Microsoft SDKs\\Windows\\" + rest for rest in (

NameError: name 'KEY_BASE' is not defined

Dem Ratschlag in demselben Link folgend, habe ich die folgende Definition von KEY_BASE hinzugefügt, bevor die Variable in msvc9compiler.py aufgerufen wird:

KEY_BASE = r"Software\Microsoft\\"

Welche Ergebnisse im endgültigen Fehler ergeben haben, konnte ich nicht beheben:

  File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\command\build_src.py", line 164, in build_sources

    self.build_library_sources(*libname_info)

  File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\command\build_src.py", line 299, in build_library_sources

    sources = self.generate_sources(sources, (lib_name, build_info))

  File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\command\build_src.py", line 386, in generate_sources

    source = func(extension, build_dir)

  File "numpy\core\setup.py", line 682, 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 folgendes ausprobiert, aber der Broken toolchain-Fehler wurde nicht behoben:

  • Dieses link das enthält einen weiteren Patch zu msvc9compiler.py
  • Dieser Link von Peter Cock (Dies hilft bei der 32-Bit-Installation von Python3.4)
  • Versuchte die Installation mit easy_install, da einige Benutzer vorschlugen, dass es auf diese Weise funktionieren könnte

ANMERKUNG 1: Ich weiß um die Problemumgehung mit den kompilierten Binärdateien auf dieser Website Ich suche speziell nach einer Lösung, die distutils verwendet, wenn es eine gibt. HINWEIS 2: Die Fehlerprotokolle sind offensichtlich größer und ich schneide ab zur besseren Lesbarkeit. 

19
Matt

Ich konnte alle diese Fehler in Windows 7 Professional (64 Bit) reproduzieren.

Ihr letztes Problem (defekte Toolchain) wird durch offensichtliche Probleme verursacht. Ich konnte dies umgehen, indem ich die folgende Zeile (in msvc9compiler.py) änderte:

mfinfo = self.manifest_get_embed_info(target_desc, ld_args)

zu

mfinfo = None

damit wird die unmittelbar folgende if-Anweisung umgangen. Nach dieser Änderung kompilierte numpy erfolgreich für mich.

8
Wetnap

Ich denke, die einfachste Lösung ist das Öffnen des Visual Studio-Befehls Prompt (Sie sollten keine anderen Korrekturen benötigen, nur die neueste Version von Python 2 oder 3). 

In Ihrem Startmenü sollten Sie etwas wie "Eingabeaufforderung von Visual Studio (2010)" haben. Öffnen Sie dieses Programm (es öffnet sich eine Eingabeaufforderung), und geben Sie dann in die Eingabeaufforderung Folgendes ein:

pip install numpy

Bemerkungen:

1) Verschiedene Versionen von Python sollen mit verschiedenen Versionen von Visual Studio kompiliert werden. Ich denke, dass die Python-Jungs beabsichtigen, mit der 2010-Version zu kompilieren (ich könnte mich darüber irren), so dass der Versuch, das Visual Studio 2013 Prompt zu öffnen, möglicherweise nicht funktioniert. Es könnte sein, dass die neueste Version von Python die Compiler gewechselt hat, aber ich würde mit dem 2010-Befehl Prompt versuchen. 

2) Sie haben möglicherweise mehrere Eingabeaufforderungsoptionen. Ich hatte Glück mit der bloßen Knochen-Version "Visual Studio Command Prompt (2010)".

3) Zur Installation von Python 3.4 könnte ich einfach eine Standard-Eingabeaufforderung öffnen und dann 

pip install numpy

für Python 2.7 musste ich jedoch den Befehl Prompt-Trick verwenden. 

3
bremen_matt

Wenn Sie das Problem mit diesen Schritten nicht behoben haben, überprüfen Sie bitte diese einfache Lösung, die mir beim Erstellen von numpy geholfen hat: Gehen Sie zu Jurkos Repository *, in dem er die Skripts für das Erstellen mit MSVC korrigiert/verbessert und heruntergeladen/kopiert füge die Dateien ein:

msvc9compiler.py
msvccompiler.py

Links:

Speichern Sie sie im Ordner '\ Lib\distutils \' Ihres Python-Installationsverzeichnisses, zB: "C:\WinPython-64bit-3.4.3.2\python-3.4.3.AMD64\Lib\distutils".

Es gibt mehrere andere Lösungen für dieses Problem beim Erstellen von Python-Modulen mit pip/easy_install, z. B .: error: vcvarsall.bat Kann nicht gefunden werden. Vcvarsall.bat kann mit Python 3.3 in Windows 8 nicht gefunden werden, was manchmal unlösbar erscheint.

Mein System: Windows 7, Windows SDK 7.1, vs2010 Express mit SP1, Python 3.4.3, 64 Bit

2
Nuno Aniceto