2010-06-15 8 views
33

पर पायथन 2.7 के लिए एलसीएमएल बिल्डिंग मैं विंडोज 64 बिट मशीन पर पायथन 2.7 के लिए एलएक्सएमएल बनाने की कोशिश कर रहा हूं। मुझे पायथन 2.7 संस्करण के लिए एलएक्सएमएल अंडे नहीं मिला। तो मैं इसे स्रोतों से संकलित कर रहा हूं। मैं इस साइटविंडोज

http://lxml.de/build.html

स्थिर जोड़ने खंड के अंतर्गत पर निर्देशों का पालन कर रहा हूँ। मुझे त्रुटि मिल रही है

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 

क्या कोई मेरी मदद कर सकता है? मैं पथ की स्थापना मैं कमांडलाइन से vcvarsall.bat चला सकते हैं .. माइक्रोसॉफ्ट विजुअल स्टूडियो के लिए की कोशिश की .. लेकिन अजगर समस्याओं

+8

यदि आप AMD64 का उपयोग करना चाहते हैं तो आप इन्हें आजमा सकते हैं: http: //www.lfd.uci।edu/~ gohlke/pythonlibs/ – ChristopheD

+0

@ क्रिस्टो क्या आपके पास इन निष्पादन योग्यताओं को उत्पन्न करने के तरीके पर कहीं निर्देश हैं? – Kamal

+1

मैंने इन्हें संकलित नहीं किया है, इसलिए सबसे अच्छी बात यह है कि लेखक से संपर्क करें: http://www.lfd.uci.edu/~gohlke/ – ChristopheD

उत्तर

58

मुझे यकीन है कि आप 2008 वी.एस. उपयोग नहीं कर रहे इस के लिए :)

रहा है def find_vcvarsall(version): समारोह निम्नलिखित टिप्पणी

At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var.

आप 2008 का उपयोग नहीं कर रहे हैं तो आप न तो रजिस्ट्री कुंजी है और न ही उपयुक्त वातावरण चर के साथ distutils में (लगता है कि क्या यह vcvarsall.bat के लिए लग रहा है,) नहीं है और यही कारण है distutils है vcvarsall.bat फ़ाइल नहीं मिल सका। यह जांचता है कि बैट फ़ाइल पैथ पर्यावरण चर के माध्यम से पहुंच योग्य है या नहीं।

समाधान विजुअल स्टूडियो की उपकरण निर्देशिका को इंगित करने के लिए VS90COMNTOOLS चर को परिभाषित करना है।

कहा जा रहा है पायथन के डॉक्स में 11.4. distutils.msvccompiler — Microsoft Compiler अनुभाग जो अजगर-सूची मेलिंग सूची पर Download Visual Studio Express 2008 now शीर्षक से ई-मेल में कहा गया है

Typically, extension modules need to be compiled with the same compiler that was used to compile Python.

मार्टिन वी। Loewis पर एक नज़र डालें एक ही

Python 2.6, 2.7, and 3.1 are all built with that release (i.e. 2008). Because of another long tradition, Python extension modules must be built with the same compiler version (more specifically, CRT version) as Python itself. So to build extension modules for any of these releases, you need to have a copy of VS 2008 or VS 2008 Express.

कहा गया है उपर्युक्त बयानों के प्रकाश में वीएस 2008 का उपयोग करना चाहिए यदि आप पाइथन 2.7 के लिए lxml बनाना चाहते हैं, तो VS90COMNTOOLS को सेट करना vcvarsall.bat फ़ाइल को ढूंढने का ख्याल रखता है ' समाधान नहीं है।

कहा जा रहा है :) लोग नए संकलक के साथ पुराने CRT इस्तेमाल करने की कोशिश करते हैं:
Can I use Visual Studio 2010's C++ compiler with Visual Studio 2008's C++ Runtime Library?
How to Enforce C++ compiler to use specific CRT version?
VS 2008 - Link against older C runtime

मैं वी.एस. के संस्करण के महत्व को ओर इशारा करते हुए के लिए कीव डॉयर (धन्यवाद देना चाहूँगा जिसका उपयोग किया जाता है) और स्टीफन बेहेल (मुझे संकलक के कॉन्फ़िगरेशन से निपटने वाले स्थान के रूप में परेशान करने के लिए इंगित करने के लिए) 0xपर lxml मेलिंग सूची पर। मैं freode #distutils आईआरसी चैनल से agronholm को भी पुष्टि करना चाहता हूं कि distutils में कोड शामिल है जो vcvarsall.bat फ़ाइल को देखता है।

+16

ठीक है, आपने इसे समझाया है, लेकिन बनाम 2008 की अनुपस्थिति में क्या करने की आवश्यकता है? – Maysam

+0

@Maysam आप ** ** इसके लिए कुछ भी नहीं बल्कि विजुअल स्टूडियो 2008 का उपयोग नहीं करना चाहिए। –

+30

ठीक है और घुमावदार उत्तर ... लेकिन यह अभी भी यह नहीं समझाता कि वास्तव में उस समस्या को ठीक करने के तरीके को कैसे ठीक किया जाए? –

4

सुझाए गए समाधान के पालन करने के बाद:

  1. Microsoft से VCForPython27.msi डाउनलोड करने,
  2. यह (Win7, पायथन (एक्स, वाई) 2.7 स्थापित करने।9 32 बिट),
  3. प्रवेश/पर्यावरण को अद्यतन करने के चर VS90COMNTOOLS स्थापना निर्देशिका मूल्य (C: \ Program Files (x86) के लिए \ Common Files \ Microsoft \ विजुअल C++ पायथन के लिए \ 9.0)

मेरी समस्या अभी भी मौजूद है (सी में पाइथन एक्सटेंशन बनाना चाहते हैं)।

मैं निम्नलिखित 2 अविश्वसनीय गंदा तोड़ मरोड़ करना था सब कुछ करने से पहले अब वास्तव में काम कर रहा है,:,: "\ Python27 \ लिब \ distutils सी '

  1. संशोधित " msvc9compiler.py "में समारोह find_vcvarsall, बजाय अब "कुलपति" के" अजगर के लिए विजुअल C++" को इंगित करने के लिए।
  2. तहत नकल निर्देशिका संस्थापक "C: \ प्रोग्राम फ़ाइलें (x86) \ आम Files \ Microsoft \ विजुअल C++ पायथन के लिए \ 9.0 \""C: \ Program Files (x86) \ Common Files \ पाइथन \ " (यानी एक डीआईआर स्तर ऊपर) के लिए माइक्रोसॉफ्ट \ विजुअल सी ++।

मैं नहीं बता सकता जो यहाँ कुछ गलत कर रहा था - मैं

संपादित शायद। this distutils bug में वर्णित समस्या के कारण निर्देशिकाएं चलती हैं।

even if VS90COMNTOOLS is set, msvc9compiler isn't able to find vcvarsall.bat because it is installed in %installdir%/vcvarsall.bat and not %installdir%/VC/vcvarsall.bat

वर्णित वैकल्पिक हल विजुअल C++ कमांड प्रॉम्प्ट उपयोग कर रहा है:

  1. Enter MSVC for Python command prompt

  2. SET DISTUTILS_USE_SDK=1

  3. SET MSSdk=1

  4. python.exe setup.py ...

3

Jorj McKie लगभग सही था: वास्तव में VCForPython27.msi स्थापित करने के लिए पर्याप्त नहीं है, और हाँ वहाँ distutils में एक मुद्दा है जो इसे रोकने के है find_vcvarsall खोजने से। वास्तव में यह मुद्दा सीधे distutils में नहीं है, लेकिन कैसे VCForPython27.msi पैक किया गया था और जहां vcvarsall.bat रखा गया है (फ़ोल्डर लेआउट VS2008 एसडीके से अलग है)।

इस बीच एक साधारण कामकाज शायद पाइथन 2.7.11 में पैच हो जाता है: distutils के बजाय setuptools का उपयोग करें।

एक और मैनुअल तरीके को आप 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 ... 

बग रिपोर्ट और ग्रेगरी Szorc द्वारा वैकल्पिक हल: http://bugs.python.org/issue23246

अधिक जानकारी और IPython अंदर जादू cython %% प्रयोग करने के लिए एक वैकल्पिक हल: https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

0

https://github.com/develersrl/gccwinbinaries

मैं सी थी मिलर मुद्दे। यह इंस्टॉल विज़ार्ड का उपयोग करने और एक वरीयता स्थापित करने के अलावा तुरंत कुछ भी काम करता है।