Domanda

Sto cercando di creare lxml per Python 2.7 su una macchina Windows a 64 bit.Non sono riuscito a trovare lxml Egg per la versione Python 2.7.Quindi lo sto compilando dalle fonti.Sto seguendo le istruzioni su questo sito

http://lxml.de/build.html

nella sezione di collegamento statico.Ricevo un errore

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

Qualcuno mi può aiutare con questo?Ho provato a impostare il percorso per avere Microsoft Visual Studio..Posso eseguire vcvarsall.bat dalla riga di comando..ma Python ha problemi

È stato utile?

Soluzione

Scommetto che non si sta usando CONTRO 2008 per questo :)

def find_vcvarsall (versione) : la funzione (indovinate un po ', cerca vcvarsall.bat) in Distutils con il seguente commento

  

In un primo momento si cerca di trovare il   productdir di VS 2008 nel Registro di sistema.   Se fallisce cade di nuovo al   VS90COMNTOOLS env var.

Se non si sta utilizzando VS 2008, allora non avete né la chiave di registro né variabile d'ambiente idoneo e questo è il motivo distutils Impossibile trovare il file vcvarsall.bat. Lo fa non di controllo se il file bat è raggiungibile tramite la variabile d'ambiente PATH.

La soluzione è quella di definire variabili VS90COMNTOOLS a scegliere Strumenti di directory di Visual Studio.

Detto dare un'occhiata al href="http://docs.python.org/distutils/apiref.html#module-distutils.msvccompiler" 11.4. distutils.msvccompiler - sezione Microsoft compilatore nei documenti di Python che gli stati

  

In genere, moduli di estensione devono   essere compilato con lo stesso compilatore   che è stato utilizzato per compilare Python.

Martin v. Loewis nella e-mail dal titolo Scarica Visual Studio Express 2008 ora su python-list mailing list afferma lo stesso

  

Python 2.6, 2.7 e 3.1 sono tutti costruiti   con tale rilascio (cioè 2008). Perché   di un'altra lunga tradizione, Python   moduli di espansione devono essere costruite con   la versione del compilatore stesso (più   in particolare, la versione CRT) come Python   si. Quindi, per costruire moduli di espansione   per qualsiasi di queste versioni, è necessario   avere una copia di VS 2008 o VS 2008   Express.

Alla luce delle dichiarazioni di cui sopra si dovrebbe l'uso VS 2008, se si vuole costruire lxml per Python 2.7 quindi anche se l'impostazione VS90COMNTOOLS si occupa di trovare file di vcvarsall.bat non è il soluzione.

Detto :) persone cercano di usare più vecchio CRT con le nuove compilatore:
Posso usare il compilatore Visual Studio 2010 di C ++ con Libreria di runtime C ++ Visual Studio 2008?
come applicare compilatore C ++ per la versione uso specifico CRT?
VS 2008 - Link contro anziani runtime C

Vorrei ringraziare Kev Dwyer (per sottolineare importanza della versione di VS che viene utilizzato) e Stefan Behnel (per me che punta a Distutils come luogo di negoziazione con la configurazione del compilatore) nel thread Problema costruzione lxml sotto Windows - errore: Impossibile trovare vcvarsall.bat su lxml mailing list. Mi piacerebbe anche ringraziare il agronholm da #distutils freenode canale IRC per la conferma che distutils fa contengono codice che sembra per il file vcvarsall.bat.

Altri suggerimenti

Dopo aver seguito la soluzione consigliata:

  1. scaricamento VCForPython27.msi da Microsoft,
  2. installandolo (Win7, Python(x, y) 2.7.9 32bit),
  3. inserendo/aggiornando la variabile d'ambiente VS90COMNTOOLS al valore della directory di installazione (C: Programmi (X86) File comuni Microsoft Visual C ++ per Python 9.0)

il mio problema esisteva ancora (voglio creare un'estensione Python in C).

Ho dovuto apportare le seguenti 2 modifiche incredibilmente sporche, prima che tutto ora funzionasse davvero:

  1. modificare "msvc9compiler.py" In "C:\Python27\Lib\distutils", funzione find_vcvarsall, per ora indicare "Visual C ++ per Python" invece di "VC".
  2. copia il fondatore delle directory sotto "C: Programmi (X86) File comuni Microsoft Visual C ++ per Python 9.0 " A "C: Programmi (X86) File comuni Microsoft Visual C ++ per Python " (cioè.un dir di livello).

Non riesco a capire chi stesse facendo qualcosa di sbagliato qui, probabilmente io.

MODIFICARE.Lo spostamento delle directory funziona a causa del problema descritto in questo bug di distutils.

anche se è impostato VS90COMNTOOLS, msvc9compiler non è in grado di trovare vcvarsall.bat perché è installato in %installdir%/vcvarsall.bat e non %installdir%/VC/vcvarsall.bat

La soluzione descritta utilizza il prompt dei comandi di Visual C++:

  1. Immettere il prompt dei comandi MSVC per Python

  2. IMPOSTA DISTUTILS_USE_SDK=1

  3. IMPOSTA MSSdk=1

  4. python.exe setup.py ...

Jorj McKie aveva quasi ragione:infatti l'installazione VCForPython27.msi non è sufficiente e sì, c'è un problema in distutils che gli impedisce di trovare find_vcvarsall.In realtà il problema non riguarda direttamente distutils, ma il modo in cui VCForPython27.msi è stato impacchettato e dove è posizionato vcvarsall.bat (il layout delle cartelle è diverso dall'SDK VS2008).

Una semplice soluzione alternativa nel frattempo viene corretta forse in Python 2.7.11:usa setuptools invece di distutils.

Un'altra soluzione manuale se sei bloccato con distutils:

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

Segnalazione di bug e soluzione alternativa di Gregory Szorc:http://bugs.python.org/issue23246

Maggiori informazioni e una soluzione alternativa per l'utilizzo di %%cython magic all'interno di IPython: https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

https://github.com/develersrl/gccwinbinaries

ho avuto problemi simili. Questo ha funzionato immediatamente senza qualcosa di diverso utilizzando un'installazione guidata e impostando una preferenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top