Frage

Ich versuche zu bauen lxml für Python 2.7 auf Windows 64-Bit-Computer. Ich konnte nicht lxml Ei für Python 2.7 Version. Also habe ich es aus Quellen am kompilieren. Ich bin nach Anleitung auf dieser Seite

http://lxml.de/build.html

unter statischem Verbindungsabschnitt. Ich erhalte Fehler

C:\Documents and Settings\Administrator\Desktop\lxmlpackage\lxml-2.2.6\lxml-2.2.
6>python setup.py bdist_wininst --static
Building lxml version 2.2.6.
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' need
s to be available.
ERROR: 'xslt-config' is not recognized as an internal or external command,
operable program or batch file.

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
Building against libxml2/libxslt in one of the following directories:
  ..\libxml2-2.7.6--win32--w2k--x64\lib
  ..\libxslt-1.1.26--win32--w2k--x64--0002\lib
  ..\zlib-1.2.4--win32--w2k--x64
  ..\iconv-1.9.1--win32--w2k--x64-0001\lib
running bdist_wininst
running build
running build_py
running build_ext
building 'lxml.etree' extension
error: Unable to find vcvarsall.bat

Kann jemand mir helfen mit diesem? Ich habe versucht, den Pfad Einstellung Microsoft Visual Studio zu haben .. Ich kann vcvarsall.bat von der Kommandozeile ausgeführt werden .. aber Python hat Probleme

War es hilfreich?

Lösung

Ich wette Sie verwenden nicht VS 2008 für diese :)

Es gibt def find_vcvarsall (version) : Funktion (erraten, was, sieht es für vcvarsall.bat) mit dem folgenden Kommentar in distutils

  

Zuerst versucht er das finden   Produktverz von VS 2008 in der Registrierung.   Wenn das fehlschlägt es zurück an das fällt   VS90COMNTOOLS env var.

Wenn Sie nicht 2008 mit VS dann haben Sie weder den Registrierungsschlüssel noch geeignetes Umgebungsvariable und deshalb distutils nicht vcvarsall.bat Datei finden. Es tut nicht zu überprüfen, ob die Bat-Datei durch die Umgebungsvariable PATH erreichbar ist.

Die Lösung ist VS90COMNTOOLS Variable Punkt zu Tools-Verzeichnis von Visual Studio.

zu definieren,

sagte, dass Wesen einen Blick auf nehmen 11.4. distutils.msvccompiler - Microsoft Compiler Abschnitt in Python-Dokumentation, die besagt,

  

Normalerweise Erweiterungsmodule müssen   mit dem gleichen Compiler kompiliert werden   Das war verwendet Python zu kompilieren.

Martin v. Loewis in der E-Mail betitelte Visual Studio Express herunterladen 2008 nun auf python-Liste Mailing-Liste gibt das gleiche

  

Python 2.6, 2.7 und 3.1 sind alle gebaut   mit dieser Freisetzung (d.h. 2008). weil   einer anderen Tradition, Python   Erweiterungsmodule müssen gebaut werden   die gleichen Compiler-Version (mehr   Insbesondere Version CRT) als Python   selbst. So Erweiterungsmodule zu bauen   für jede dieser Versionen, müssen Sie   eine Kopie von VS 2008 oder VS 2008   Express.

Im Lichte der obigen Ausführungen Sie sollte Verwendung VS 2008, wenn Sie Build lxml für Python wollen 2.7 so, obwohl VS90COMNTOOLS kümmert finden vcvarsall.bat Datei einstellen, es ist nicht die Lösung.

That being said :) Menschen mit neueren Compiler ältere CRT zu verwenden versuchen:
Kann ich Visual Studio 2010 ist C ++ Compiler mit Visual Studio 2008 ist C ++ Runtime Library?
Wie C ++ Compiler Version Verwendung spezifischer CRT erzwingen?
VS 2008 - Ein Link gegen ältere C-Laufzeit

würde Ich mag danken an Kev Dwyer (für den Hinweis auf Bedeutung der Version von VS, die verwendet wird) und Stefan Behnel (für den Hinweis mich zu distutils als Ort Umgang mit Compiler-Konfiguration) im Thread Aufbau Problem lxml unter Windows - Fehler: Kann nicht vcvarsall.bat auf lxml Mailingliste finden. Ich möchte auch danken agronholm von freenode #distutils IRC-Kanal für die Bestätigung, dass distutils Code enthält, die Looks für vcvarsall.bat Datei.

Andere Tipps

Nach dem Anschluss an die empfohlene Lösung:

  1. Download VCForPython27.msi von Microsoft,
  2. Installieren it (Win7, Python (x, y) 2.7.9 32bit),
  3. Eingabe / die Umgebungsvariable zu aktualisieren VS90COMNTOOLS     das Installationsverzeichnis Wert (C: \ Program Files (x86) \ Common     Files \ Microsoft \ Visual C ++ für Python \ 9.0)

mein Problem existiert noch (will eine Python-Erweiterung in C bauen).

Ich hatte das folgende 2 unglaublich schmutzig zwickt zu tun, vor allem jetzt in der Tat funktioniert:

  1. modify "msvc9compiler.py" in "C: \ Python27 \ Lib \ distutils" , Funktion find_vcvarsall , bis jetzt zeigt auf "Visual C ++ für Python " statt " VC ".
  2. Kopieren Sie die Verzeichnisse Gründer unter "C: \ Program Files (x86) \ Common Files \ Microsoft \ Visual C ++ für Python \ 9.0 \ " " C: \ Program Files (X86) \ Gemeinsame Dateien \ Microsoft \ Visual C ++ für Python \ " (das heißt ein Richt Ebene nach oben).

Ich kann nicht sagen, wer hier etwas falsch macht -. Wahrscheinlich I

EDIT. Verschieben von Verzeichnissen funktionieren, weil die Ausgabe beschrieben in diesem distutils Fehler .

  

auch wenn VS90COMNTOOLS gesetzt ist, ist nicht in der Lage msvc9compiler vcvarsall.bat zu finden, weil es in %installdir%/vcvarsall.bat installiert ist und nicht %installdir%/VC/vcvarsall.bat

Das beschriebene Problem zu umgehen wird unter Verwendung des Visual C ++ Eingabeaufforderung aus:

  
      
  1. Geben Sie MSVC für Python-Eingabeaufforderung

  2.   
  3. SET DISTUTILS_USE_SDK = 1

  4.   
  5. SET MSSDK = 1

  6.   
  7. python.exe setup.py ...

  8.   

Jorj McKie war fast richtig: in der Tat die Installation von VCForPython27.msi ist nicht genug, und ja, es ist ein Thema in distutils, die sie von der Suche nach find_vcvarsall verhindern. In der Tat ist die Frage nicht direkt in distutils, sondern wie VCForPython27.msi verpackt wurde und wo vcvarsall.bat platziert (die Ordner-Layout aus dem VS2008 SDK unterscheidet).

Eine einfache Abhilfe mittlerweile dies vielleicht in Python gepatcht wird 2.7.11. Verwendung Setuptools statt distutils

Eine weitere manuelle Abhilfe, wenn Sie mit distutils gehaftet werden:

1) Enter MSVC for Python command prompt
2) SET DISTUTILS_USE_SDK=1
3) SET MSSdk=1
4) you can then build your C extensions: python.exe setup.py ...

Bugreport und Abhilfe durch Gregory Szorc: http://bugs.python.org/issue23246

Weitere Informationen und eine Abhilfe für die Verwendung von %% cython Magie innen IPython: https: // GitHub. com / cython / cython / wiki / CythonExtensionsOnWindows

https://github.com/develersrl/gccwinbinaries

Ich hatte ähnliche Probleme. Das funktionierte sofort, ohne etwas anderes als mit einem Installationsassistenten und eine Präferenz einstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top