त्रुटि: vcvarsall.bat खोजने में असमर्थ


851

मैंने पायथन पैकेज डुलविच स्थापित करने की कोशिश की :

pip install dulwich

लेकिन मुझे एक गुप्त त्रुटि संदेश मिलता है:

error: Unable to find vcvarsall.bat

यदि मैं पैकेज को मैन्युअल रूप से स्थापित करने का प्रयास करता हूं तो भी ऐसा ही होता है:

> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat

6
भविष्य के संदर्भ के लिए यह देखना अच्छा होगा कि आप किस प्लेटफॉर्म का उपयोग करते हैं।
viam0Zah

47
अगर आपको लगता है कि यह एक अजीबोगरीब गूढ़ और अशुभ
कर्नल पैनिक

48
: माइक्रोसॉफ्ट अब एक समाधान प्रदान करता microsoft.com/en-us/download/details.aspx?id=44266
मार्टिन पीटर्स

6
@MartijnPieters मैंने व्हील और सेटपूल के साथ दिए गए लिंक को डाउनलोड करने और इंस्टॉल करने की कोशिश की 7.0 लेकिन यह काम नहीं करता है मुझे संदेश मिलता है: C:\Users\User\libfreenect\wrappers\python>python setup.py install running install running build running build_ext building 'freenect' extension error: Unable to find vcvarsall.bat
compski

4
स्टीव डावर (Microsoft की पायथन टीम पर एक व्यक्ति) ने इस विषय पर एक ब्लॉग पोस्ट लिखी है जो पढ़ने लायक है: blogs.msdn.microsoft.com/pythonengineering/2016/04/11/…
Cody Piersall

जवाबों:


683

अपडेट : टिप्पणियां बताती हैं कि यहां के निर्देश खतरनाक हो सकते हैं। दृश्य C ++ 2008 एक्सप्रेस संस्करण या उद्देश्य-निर्मित Microsoft Visual C ++ कंपाइलर का उपयोग पायथन ( विवरण ) के लिए करने पर विचार करें और नीचे मूल उत्तर का उपयोग नहीं करें। मूल त्रुटि संदेश का अर्थ है विजुअल C ++ का आवश्यक संस्करण स्थापित नहीं है।


विंडोज इंस्टॉलेशन के लिए:

पैकेज इंस्टॉलेशन के लिए setup.py चलाने के दौरान, Python 2.7 एक स्थापित Visual Studio 2008 की खोज करता है। आप VS90COMNTOOLSकॉल करने से पहले पर्यावरण चर में सही पथ सेट करके एक नए Visual Studio का उपयोग करने के लिए पायथन को ट्रिक कर सकते हैं setup.py

स्थापित Visual Studio के संस्करण के आधार पर निम्न आदेश निष्पादित करें:

  • विजुअल स्टूडियो 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • विजुअल स्टूडियो 2012 (वीएस 11): SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • विजुअल स्टूडियो 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%
  • विजुअल स्टूडियो 2015 (VS14): SET VS90COMNTOOLS=%VS140COMNTOOLS%

चेतावनी: जैसा कि नीचे उल्लेख किया गया है, यह जवाब काम करने की संभावना नहीं है यदि आप अजगर मॉड्यूल संकलित करने की कोशिश कर रहे हैं।

देखें विंडोज पर पायथन 2.7 के लिए बिल्डिंग lxml जानकारी के लिए।


21
यह मेरे लिए किया :(
fmuecke

8
@ गिल्ली: ऐसा लगता है कि यह समस्या चर में रिक्त स्थान के कारण है, इसे उद्धरणों में लपेटने का प्रयास करें। मेरे लिए% VS100COMNTOOLS% = "C: \ Program Files (x86) \ Microsoft दृश्य स्टूडियो 10.0 \ Common7 \ Tools"
किंवदंतियों 2k

7
यह कई चीजों के लिए काम नहीं करेगा, क्योंकि अजगर VS2008 पर निर्भर करता है। इस उत्तर पर एक नज़र डालें: stackoverflow.com/questions/6551724/…
shezi

182
चेतावनी !!! यह गलत जवाब है। आपको किसी भी परिस्थिति में पायथन सी एक्सटेंशन को अलग-अलग (संस्करण) संकलक का उपयोग करके संकलित नहीं करना चाहिए , जो कि अजगर को खुद संकलित करता था क्योंकि वे दो (संस्करण) संकलक शायद असंगत सी रनटाइम लाइब्रेरी होंगे। देखें इस अधिक जानकारी के लिए इस सवाल का जवाब।
पिओटर डोब्रोगोस्ट

72
आप free Visual C ++ 2008 एक्सप्रेस संस्करण को go.microsoft.com/?linkid=7729279 से डाउनलोड कर सकते हैं , जो स्थापना के दौरान VS90COMNTOOLS पर्यावरण चर सेट करेगा और इसलिए संगत कंपाइलर के साथ निर्माण करेगा।
एरिक स्मिथ

225

मुझे इसका हल मिल गया। मुझे वही समस्या थी, और त्रुटि, 'अमारा' को स्थापित करने की। मेरे पास mingw32 स्थापित था, लेकिन डिस्टुटिल को कॉन्फ़िगर करने की आवश्यकता थी।

  1. मेरे पास पाइथन 2.6 है जो पहले से स्थापित था।
  2. मैंने mingw32 को स्थापित किया C:\programs\mingw\
  3. संलग्न: अपने वातावरण चर को mingw32 के बिन निर्देशिका जोड़ें c:\programs\MinGW\bin;करने के लिए पथ
  4. संपादित करें (यदि मौजूद नहीं है तो बनाएं) distutils.cfg फ़ाइल जिस पर स्थित C:\Python26\Lib\distutils\distutils.cfgहै:

    [build]
    compiler=mingw32
  5. अब दौड़ो easy_install.exe amara

सुनिश्चित करें कि वातावरण एक नया खोलकर बनाया गया है cmd.exe


45
यह Python2.6 के लिए बहुत अच्छा काम करता है, लेकिन किसी कारण से मैं Python2.7 पर काम नहीं कर पा रहा हूं। यह काम करता है अगर मैं अपने पैकेज स्रोत को डाउनलोड कर रहा हूं और 'python setup.py install --compile = mingw32' का उपयोग करके इंस्टॉल करता हूं, लेकिन किसी कारण से easy_install या pip का उपयोग करना अभी भी vcvarsall को खोजने का प्रयास करता है।
जोनाथन हार्टले

2
मैं आखिरकार scikits.image को पायथन (x, y) 2.7 में स्थापित करने के लिए और उपयोगकर्ता PATH को जोड़ने C:\msysgit\mingw\mingw32\binऔर फिर C:\msysgit\mingw\binसे चलने pip installसे पहले स्पाइडर को पुनः आरंभ करने के लिए मिल गया
Endolith

20
पर्यावरण चर परिवर्तन के कारण कभी भी रिबूट करने की आवश्यकता नहीं है। एक नया cmd.exe प्रक्रिया खोलना पर्याप्त है।
तोमलक

11
मैं अभी भी इसे ठीक नहीं कर सका। यह त्रुटि है: के gcc: error: unrecognized command line option '-mno-cygwin' error: Setup script exited with error: command 'gcc' failed with exit status 1बादeasy_install.exe amara
उपयोगकर्ता

5
@user, आपको यह फ़ाइल C:\Python27\Lib\distutils\cygwincompiler.pyखोलनी चाहिए: और इसमें से सभी ऑप्रेशन हटा दें –mno-cygwin; इसका कारण यह है कि जीसीसी के हाल के संस्करणों ने –mno-cygwinविकल्प हटा दिया है और यह नहीं होना चाहिए।
ज़ीनब अब्बासिमज़र

220

आप http://www.lfd.uci.edu/~gohlke/pythonlibs/ से संकलित संस्करण स्थापित कर सकते हैं


15
बस एक टिप: आप virtualenv में इस साइट से पैकेज को virtualenv में चलाकर स्थापित कर सकते हैं easy_install binary_installer_built_with_distutils.exe, इस उत्तर के लिए
यंग्ज़

14
प्रत्येक पायथन विंडोज देव को इसके बारे में पता होना चाहिए
हाई स्कूलर

1
आप wheel convert ....exeइन इंस्टॉलरों को भी लगा सकते हैं और फिर जब चाहें पाइप के साथ स्थापित कर सकते हैं।
ज़ोबा

3
अधिक सटीक होने के लिए, lfd.uci.edu/~gohlke/pythonlibs/#mysql-python और एक बार व्यवस्थापक के रूप में एक टर्मिनल खोलें और डाउनलोड करेंpython -m pip install <filename>
arun

भगवान की होली माँ, यह सही मौके पर है। एक आकर्षण की तरह काम करता है, TY :)
अमीर

162

यदि आप mingw के बजाय Visual Studio C ++ का संकलन करना चाहते हैं ...

  1. python.exeवीसी ++ के कौन से संस्करण को प्रदर्शित करने के लिए चलाएँ, यह (उदाहरण नीचे दिखाया गया है) के साथ संकलित किया गया था।

    यह है महत्वपूर्ण विज़ुअल सी ++ संकलक की इसी संस्करण है कि अजगर के बाद से साथ संकलित किया गया था का उपयोग करने के distilutils की get_build_versionरोकता है (मिश्रण संस्करणों पायोत्र की चेतावनी प्रति )।

    • पीला (शीर्ष) पायथन 2.7 है, जिसे MSC v.1500 (विजुअल स्टूडियो C ++ 2008) के साथ संकलित किया गया है:
    • लाल (निचला) पायथन 3.4.1 है, जिसे MSC v.1600 (विजुअल स्टूडियो C ++ 2010) के साथ संकलित किया गया है

    कमांड लाइन से उदाहरण पायथन 2.7 दिखा रहा है जिसे MSC v.1500 के साथ संकलित किया गया है और Python 3.4.1 को MSC v.1600 के साथ संकलित किया गया है

  2. नीचे दी गई तालिका का उपयोग करें [1] इसी दृश्य स्टूडियो रिलीज के साथ आंतरिक कुलपति ++ संस्करण से मेल करने के लिए:

    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. पिछले चरण से Visual Studio C ++ का संबंधित संस्करण डाउनलोड और इंस्टॉल करें।
    VC ++ के विशिष्ट संस्करणों के लिए अतिरिक्त नोट नीचे सूचीबद्ध हैं।

    विजुअल स्टूडियो C ++ 2008 के लिए नोट्स

    के लिए केवल 32-बिट compilers, डाउनलोड दृश्य स्टूडियो सी ++ 2008 एक्सप्रेस संस्करण

    64-बिट कंपाइलर [2] [3] के लिए , विंडोज 7 और .NET फ्रेमवर्क 3.5 SP1 के लिए विंडोज एसडीके डाउनलोड करें ।

    • Developer Tools >> Visual C++ Compilersएसडीके टूल को स्थापित करने से समय और डिस्क स्थान को बचाने के अलावा सब कुछ अनचेक करें, अन्यथा आपको इसकी आवश्यकता नहीं है।

    दृश्य स्टूडियो C ++ 2010 के लिए नोट्स

    Microsoft के अनुसार, यदि आपने Visual Studio 2010 SP1 को स्थापित किया है, तो उसने VC ++ के लिए कंपाइलर्स और लाइब्रेरीज़ को हटा दिया हो सकता है।
    यदि ऐसा है, तो दृश्य C ++ 2010 SP1 कंपाइलर अद्यतन डाउनलोड करें

    विजुअल स्टूडियो C ++ 2015 के लिए नोट्स

    यदि आपको Visual Studio IDE की आवश्यकता नहीं है, तो Visual Studio C ++ 2015 बिल्ड टूल डाउनलोड करें

    विजुअल स्टूडियो C ++ 2017 के लिए नोट्स

    यदि आपको Visual Studio IDE की आवश्यकता नहीं है, तो Visual Studio 2017 के लिए Build Tools डाउनलोड करें ।

    सुझाव : यदि आपके पास ३२- और ६४-बिट पायथन इंस्टॉलेशन दोनों हैं, तो आप अलग-अलग पायथन वातावरण बनाने के लिए वर्चुअन का उपयोग करना चाह सकते हैं ताकि आप एक या एक बार अपने पथ से खिलवाड़ किए बिना एक या दूसरे का उपयोग कर सकें, जिसे चुनने के लिए पायथन संस्करण का उपयोग करें उपयोग।

@Srodriguex के अनुसार , आप बैच फ़ाइल (चरण 4-6) को मैन्युअल रूप से लोड करने में सक्षम हो सकते हैं इसके बजाय कुछ बैच फ़ाइलों को कॉपी करके जहां पायथन इस उत्तर का अनुसरण करके खोज कर रहा है । यदि वह काम नहीं करता है, तो यहां निम्नलिखित चरण हैं जो मूल रूप से मेरे लिए काम करते हैं।

  1. खोलो ए cmd.exe

  2. इससे पहले आप कुछ स्थापित करने की कोशिश करें जिसमें सी एक्सटेंशन की आवश्यकता हो, वीसी ++ कंपाइलर के पर्यावरण को सत्र में (यानी पर्यावरण चर, संकलक के लिए पथ, आदि) लोड करने के लिए निम्न बैच फ़ाइल चलाएँ।

    निष्पादित:

    • 32-बिट संकलक:

      नोट : 32-बिट विंडोज इंस्टॉलेशन केवल C:\Program Files\अपेक्षा के अनुरूप होगा

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"

    • 64-बिट संकलक:

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars64.bat"

      नोट : हां, 64-बिट के मूल निवासी अंदर हैं Program Files (x86)। मुझसे मत पूछो क्यों।
      साथ ही, आप सोच रहे हैं कि अगर क्या बीच का अंतर vcvars64.batऔर vcvarsx86_amd64.batया अधिक महत्वपूर्ण बात के बीच का अंतर amd64और x86_amd64पूर्व जन्म का 64-बिट संकलक उपकरणों के लिए कर रहे हैं और बाद के 64-बिट पार compilers कि एक 32-बिट Windows स्थापना पर चला सकते हैं ।

    अद्यतन:
    यदि आप हो रही है किसी कारण से error: ... was unexpected at this time.जहां ...पात्रों में से कुछ श्रृंखला है, तो आप जांच करने के लिए है कि आप पथ चर अतिरिक्त कोटेशन या आवारा वर्ण की तरह किसी भी असंगत वर्णों नहीं है की जरूरत है। यदि यह पहली बार में इसका कोई अर्थ नहीं निकाल सकता है तो बैच फ़ाइल आपके सत्र पथ को अपडेट करने में सक्षम नहीं होगी।

  3. अगर यह ठीक हो गया है, तो आपको वीसी ++ के किस संस्करण और आपके द्वारा चलाए गए कमांड के आधार पर निम्न में से एक संदेश प्राप्त करना चाहिए:

    32-बिट संकलक उपकरण के लिए:
    Setting environment for using Microsoft Visual Studio 20xx x86 tools.

    64-बिट संकलक उपकरण के लिए:
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. अब , के माध्यम से सेटअप चलाएँ python setup.py installयाpip install pkg-name

  5. आशा है और अपनी उंगलियों को पार करें कि ग्रहों को ठीक से सहयोग करने के लिए वीसी ++ के लिए गठबंधन किया गया है।


पर्याप्त है कि आप की सिफारिश नहीं कर सकते हैं सीधे करने के लिए 64 बिट हिलाने की दर्द के माध्यम से जाने। यह कुछ समय पहले की बात है जब आपको 4gb से अधिक पते की जगह चाहिए होगी। मैं 32 बिट जाने के बाद दर्दनाक अनुभव से बात करता हूं क्योंकि यह बहुत आसान था, फिर निर्भरता सहित सब कुछ अनइंस्टॉल करना और 64 बिट जाना। लगभग पूरा एक सप्ताह।
थॉमस ब्राउन

1
फिर, मैं भूल गया कि कितने बड़े कार्यों के लिए कितने लोगों को पायथन का उपयोग करना पड़ रहा है। और @ThomasBrowne, मुझे यकीन है कि एक दर्दनाक और एक अनुभव की अनावश्यक बुराई थी। मैं इसे देख रहा हूं, और उम्मीद है कि मुझे कुछ मिल सकता है। मुख्य मुद्दा यह था कि विज़ुअल स्टूडियो सी ++ 2008 एक्सप्रेस 64-बिट संकलक के साथ नहीं आता है, लेकिन मुझे यकीन है कि इसके आसपास कहीं न कहीं है।
जोश बोडेन

बस इसे और अधिक जानकारी के साथ अद्यतन किया जाए कि कैसे 64-बिट संकलक प्राप्त करें यदि आपको उनकी आवश्यकता है।
जोश बोडेन

मेरे मामले में, मैं ऊपर दिए गए चरण 1 का पालन करता हूं और इस उत्तर के बाद बाकी को छोड़ देता हूं । अब मैं .bat की झुंझलाहट से बचने के लिए पैकेज स्थापित करने में सक्षम हूं।
सूरोड्रिग्स

उस मामले में @srodriguex अच्छी तरह से, ऐसा लग रहा है कि पायथन यह मान रहा है कि 64-बिट संकलक उपकरण पाथ में लोड हो जाते हैं, जो इसका उपयोग कर रहा है ...\VC\bin\vcvarsamd64.batऔर ...\VC\bin\amd64\vcvarsamd64.bat
जोश बोडेन

72

क्या चल रहा है? पायथन मॉड्यूल को C या C ++ (आमतौर पर गति के लिए) में लिखा जा सकता है । यदि आप पिप (या setup.py) के साथ इस तरह के पैकेज को स्थापित करने का प्रयास करते हैं , तो उसे स्रोत से C / C ++ संकलित करना होगा। बॉक्स के बाहर, पिप बेशर्मी से आपको संकलित करेगा Microsoft Visual C ++ स्थापित। यदि आपके पास यह नहीं है, तो आपको यह गुप्त त्रुटि संदेश "त्रुटि: vcvarsall.bat खोजने में असमर्थ" दिखाई देगा।

निर्धारित समाधान C / C ++ कंपाइलर या तो Microsoft Visual C ++, या MinGW (एक ओपन-सोर्स प्रोजेक्ट) स्थापित करना है। हालाँकि, स्थापित करना और कॉन्फ़िगर करना या तो निषिद्ध है। (एडिट 2014: माइक्रोसॉफ्ट ने पायथन 2.7 के लिए एक विशेष C ++ कंपाइलर प्रकाशित किया है )

सबसे आसान उपाय लोकप्रिय पायथन पैकेज के लिए क्रिस्टोफ गोहले के विंडोज इंस्टालर (.msi) का उपयोग करना है। वह पायथन 2.x और 3.x, 32 बिट और 64 बिट के लिए इंस्टॉलर बनाता है। आप उन्हें http://www.lfd.uci.edu/~gohlke/pythonlibs/ से डाउनलोड कर सकते हैं


अगर आपको भी लगता है कि "त्रुटि: vcvarsall.bat को खोजने में असमर्थ" एक अजीबोगरीब गूढ़ और अदम्य संदेश है, तो कृपया इसे और अधिक उपयोगी और उपयोगकर्ता के साथ प्रतिस्थापित करने के लिए http://bugs.python.org/issue2943 बग पर टिप्पणी करें। अनुकूल संदेश।

तुलना के लिए, एक पैकेज मैनेजर जेम के साथ रूबी जहाज और एक अर्ध-आधिकारिक सी / सी ++ कंपाइलर, देवकीट प्रदान करता है। यदि आप इसके बिना पैकेज स्थापित करने का प्रयास करते हैं, तो आपको यह उपयोगी मैत्रीपूर्ण उपयोगी संदेश दिखाई देता है:

निर्माण उपकरण शामिल करने या http://rubyinstaller.org/downloads से DevKit को डाउनलोड करने और http://github.com/oneclick/rubyinstaller/wiki/Development-it पर निर्देशों का पालन करने के लिए कृपया अपने PATH को अपडेट करें

आप https://stackoverflow.com/a/13445719/284795 पर पाइथन पैकेजिंग के बारे में एक लंबा शेख़ी पढ़ सकते हैं


मैं अपने आभासी वातावरण में इस पूर्व संकलित निष्पादन योग्य को स्थापित करने के लिए पाइप का उपयोग कैसे कर सकता हूं?
शैलेन

@shailenTJ अच्छा सवाल। मैंने इसे कभी नहीं किया है, लेकिन स्टैकओवरफ़्लो की
कर्नल पैनिक

यह सबसे अच्छा / आसान उपाय था जिससे मैं अवगत हूं। धन्यवाद।
user1477388

वह सम्पादन 2014 मेरे लिए सबसे अच्छा उत्तर है। निर्देश याद करने में आसान: सुनिश्चित करें कि आप setuptoolsसंस्करण के 6.0साथ अद्यतन या अधिक के साथ pip install setuptools --upgrade
orlade

64

आपको पायथन बनाने के लिए उपयोग किए जाने वाले कंपाइलर के साथ संगत एक Microsoft कंपाइलर स्थापित करना होगा। इसका मतलब है कि आपको विजुअल C ++ 2008 (या कुछ नया करने के साथ नया ) की आवश्यकता है।

माइक्रोसॉफ्ट अब एक बंडल संकलक की आपूर्ति और हेडर बस , अजगर एक्सटेंशन संकलित करने के लिए यादगार URL पर सक्षम होने के लिए:

पायथन 2.7 के लिए माइक्रोसॉफ्ट विजुअल C ++ कंपाइलर

http://aka.ms/vcpython27

यह एक अपेक्षाकृत छोटा पैकेज है; डाउनलोड करने के लिए 85MB, व्यवस्थापक विशेषाधिकारों के बिना इंस्टॉल करने योग्य, कोई रिबूट की आवश्यकता नहीं है। नाम थोड़ा भ्रामक है, संकलक किसी भी पायथन संस्करण के लिए काम करेगा जो मूल रूप से विज़ुअल सी ++ 2008 के साथ संकलित है, न कि केवल पायथन 2.7।

यदि आप पायथन इंटरेक्टिव प्रॉम्प्ट या प्रिंट शुरू करते हैं sys.version, तो MSCसंस्करण स्ट्रिंग देखें; यदि यह है MSC v.1500तो आप इस उपकरण का उपयोग कर सकते हैं।

से distutils सूची में मूल घोषणा :

Microsoft ने Python 2.7 के लिए एक कंपाइलर पैकेज जारी किया है जिससे लोगों को विंडोज पर अपने C एक्सटेंशन मॉड्यूल बनाने और वितरित करने में आसानी हो। Python 2.7 (उर्फ VC9) के लिए Microsoft Visual C ++ कंपाइलर से उपलब्ध है: http://aka.ms/vcpython27

इस पैकेज में पायथन 2.7 32-बिट और 64-बिट के लिए सी एक्सटेंशन मॉड्यूल बनाने के लिए आवश्यक सभी उपकरण और हेडर शामिल हैं (ध्यान दें कि कुछ एक्सटेंशन मॉड्यूल को ओपन पार्टीएल या लीबेक्सामेल 2 जैसे 3 पार्टी निर्भरता की आवश्यकता होती है जो शामिल नहीं हैं)। विजुअल C ++ 2008 के साथ निर्मित पायथन के अन्य संस्करण भी समर्थित हैं, इसलिए "पायथन 2.7" सिर्फ विज्ञापन है - यह 2.6 और 3.2 के साथ ठीक काम करेगा।

ध्यान दें कि आपको setuptools6.0 या नए इंस्टॉल किए जाने की आवश्यकता है (डाउनलोड पृष्ठ पर सिस्टम आवश्यकताओं में सूचीबद्ध)। आप जिस प्रोजेक्ट को स्थापित कर रहे हैं setuptools.setup()उसका उपयोग करना चाहिए , नहीं distutilsया ऑटो-डिटेक्शन काम नहीं करेगा।

Microsoft ने कहा है कि वे URL को स्थिर रखना चाहते हैं, ताकि स्वचालित स्क्रिप्ट इसे आसानी से संदर्भित कर सकें।


2
मेरी अन्य टिप्पणी के अनुसार, आप यह सुनिश्चित कर सकते हैं कि आपके setuptoolsसाथ क्या हो रहा है pip install setuptools --upgrade
orlade

मैंने इस मामले पर ध्यान दिया कि प्रासंगिक तर्क इसके setuptoolsबजाय क्यों है distutils- आखिरकार, मॉड्यूल का निर्माण कोर कार्यक्षमता है, और इसमें प्रासंगिक कोड है, लेकिन इसका एक पुराना संस्करण है। ऐसा लगता है कि distutilsअनुरक्षकों ने अभी तक सभी संभव MSSDK विविधताओं का समर्थन करने के लिए छोड़ दिया और इस काम को अपने setuptoolsसहयोगियों पर फेंक दिया जो अधिक उत्सुक थे।
ivan_pozdeev

1
@ivan_pozdeev: पायथन रिलीज़ साइकिल कैन में शामिल की setuptoolsतुलना में कहीं अधिक बार distutilsरिलीज़ कर सकता है। और distitutilsवास्तव में एक रखरखाव मोड में चला गया है, इसे बदलने के लिए नए सिस्टम पर काम के साथ। इसके बजाए काम ठप हो गया।
मार्टिन पीटर्स

साइथॉन डिस्टिल्स का उपयोग करता है, आपको सेटपूल से आयात करने की आवश्यकता होती है जो बंदर-पैच डिस्टुटिल करता है: github.com/cython/cython/wiki/CythonExtensionsOnWindows
denfromufa

54

मुझे बस यही समस्या थी, इसलिए मैं अपनी कहानी यहाँ बताता हूँ कि यह उम्मीद करता है कि यह किसी और को उन्हीं मुद्दों के साथ मदद करे और उन्हें कुछ घंटों के लिए बचाए।

मेरे पास विंडोज़ 7 बॉक्स में mingw (g ++ (GCC) 4.6.1) और अजगर 2.7.3 है और मैं PyCrypto को स्थापित करने की कोशिश कर रहा हूं।

यह सब इस त्रुटि के साथ शुरू हुआ जब setup.py स्थापित:

error: Unable to find vcvarsall.bat

पसंद के संकलक के रूप में मिंगव को निर्दिष्ट करके त्रुटि को हल करने के बाद आसानी से हल किया गया:

setup.py install build --compiler=mingw32

समस्या यह है कि तब मुझे एक अलग त्रुटि मिली:

configure: error: cannot run C compiled programs.

यह पता चला है कि मेरा एंटी-वायरस नए सिरे से संकलित किए गए निष्पादन को रोक रहा है। मैंने बस एंटी-वायरस "निवासी शील्ड" को निष्क्रिय कर दिया और अगली त्रुटि पर गया:

cc1.exe: error: unrecognized command line option '-mno-cygwin' 
error: command 'gcc' failed with exit status 1

इसने इसे हल किया: "या तो मिनगॉव के थोड़े पुराने संस्करण को स्थापित करें, या -mno-cygwin के सभी उदाहरणों को हटाने के लिए अपने पायथन निर्देशिका में distutils \ cygwinccompiler.py संपादित करें।" ( यहां से )

अब, मैं अंत में काम करना शुरू कर सकता हूं।


7
आपको पाइथन लाइब्रेरी के न्यूनतम-संगत संस्करण की भी आवश्यकता होगी। अधिक जानकारी के लिए eli.thegreenplace.net/2008/06/28/… देखें
गिली

ट्विस्ट एंड टर्न्स: D
Xilpex

23

ऐसा लगता है कि इसके कुलपति संकलक की तलाश कर रहे हैं, इसलिए आप संकलक प्रकार का उल्लेख करने की कोशिश कर सकते हैं -c mingw32, क्योंकि आपके पास एमएसवाई है

python setup.py install -c mingw32

16
बस काम करने के लिए, जो आदेश काम करता है वह है: python setup.py build --compiler=mingw32इसके बादpython setup.py install
एमिल स्टेनस्ट्रॉम

पाइथन सेटअप चलाने के बाद - थ्रॉइलर = mingw32 मैं ImportError को पुन: प्राप्त करता हूं: Cython.Distutils नाम का कोई भी मॉड्यूल नहीं है जबकि साइथॉन एनाकोंडा के तहत स्थापित है। कोई सुझाव?
Serendipity

20

मेरे पास अजगर 2.73 और खिड़कियां 7 हैं। जो समाधान मेरे लिए काम करता था वह था:

  1. पर्यावरण चर में mingw32 की बिन निर्देशिका को जोड़ा गया: PATH को साथ जोड़ेंC:\programs\mingw\bin;
  2. निर्मित distutils.cfg पर स्थित C:\Python27\Lib\distutils\distutils.cfgयुक्त

    [build]
    compiler=mingw32

अब -mno-cygwin ध्वज को न पहचानने वाले MinGW से निपटने के लिए, C: \ Python27 \ Lib \ Distutils \ cygwincompiler.py लाइन 322 से 326 में ध्वज को हटा दें, तो यह इस तरह दिखता है:

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

15

setup.pyउस पैकेज की फ़ाइल में देखें जिसे आप स्थापित करने का प्रयास कर रहे हैं। यदि यह एक पुराना पैकेज है तो इसके distutils.core.setup()बजाय आयात किया जा सकता है setuptools.setup()

मैं इन कारकों के संयोजन के साथ इसमें (2015 में) भाग गया:

  1. Http://aka.ms/vcpython27 से Python 2.7 के लिए Microsoft Visual C ++ कंपाइलर

  2. एक पुराने पैकेज का उपयोग करता है distutils.core.setup()

  3. python setup.py buildउपयोग करने के बजाय करने की कोशिश कर रहा है pip

यदि आप पाइप के हाल के संस्करण का उपयोग करते हैं, तो यह सेटटोनोल का उपयोग करने के लिए पैकेज (मंकीपैक) को बाध्य करेगा, भले ही इसके डिस्टिल के setup.pyलिए कॉल। हालांकि, यदि आप पाइप का उपयोग नहीं कर रहे हैं, और इसके बजाय बस कर रहे हैं python setup.py build, तो बिल्ड प्रक्रिया का उपयोग करेगा distutils.core.setup(), जो कंपाइलर स्थापित स्थान के बारे में नहीं जानता है।


समाधान

चरण 1: उचित दृश्य C ++ 2008 कमांड प्रॉम्प्ट खोलें

स्टार्ट मेन्यू या स्टार्ट स्क्रीन खोलें, और "विजुअल C ++ 2008 32-बिट कमांड प्रॉम्प्ट" (यदि आपका पायथन 32-बिट है) या "विजुअल C ++ 2008 64-बिट कमांड प्रॉम्प्ट" (यदि आपका अजगर 64-बिट है) को खोजें। । चलाओ। कमांड प्रॉम्प्ट को टाइटल बार में विजुअल C ++ 2008 ... कहना चाहिए।

चरण 2: पर्यावरण चर सेट करें

आपके द्वारा अभी खोले गए कमांड प्रॉम्प्ट में इन पर्यावरण चर को सेट करें।

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

संदर्भ http://bugs.python.org/issue23246

चरण 3: निर्माण और स्थापित करें

cdआप जिस पैकेज का निर्माण करना चाहते हैं, और python setup.py buildफिर चलाएं python setup.py install। यदि आप किसी virtualenv में स्थापित करना चाहते हैं, तो निर्माण करने से पहले इसे सक्रिय करें।


आप अपने कोड को <code> python setup.py build </ code> के बजाय <code> pip </ code> का उपयोग करके अपने पैकेज का निर्माण कर सकते हैं
aronadaal

9

शायद किसी को दिलचस्पी हो सकती है, निम्नलिखित ने मेरे लिए py2exe पैकेज के लिए काम किया। (मेरे पास विंडोज 7 64 बिट और पोर्टेबल अजगर 2.7, विंडोज 7 के लिए विंडोज एसडीके के साथ विजुअल स्टूडियो 2005 एक्सप्रेस और .NET फ्रेमवर्क 4 है)

set VS90COMNTOOLS=%VS80COMNTOOLS%

फिर:

python.exe setup.py install

नहीं, आप सही हैं, मुझे यकीन नहीं है कि क्या हुआ, मैं मूल टिप्पणी को हटा दूंगा।
डेव चैलिस

1
बहुत उपयोगी!! मेरे मामले में, मैंने 'VS90COMNTOOLS =% VS110COMNTOOLS%' बनाया है।
jrvidotti

@ एक्सज़ाइल: हाँ, आप एक ही कमांड प्रॉम्प्ट सेशन में ये कमांड टाइप करते हैं
स्टेफानो फेंकू

यह मत करो!!! देखें इस उत्तर अधिक जानकारी के लिए।
बेनामी

8

मैंने लगभग 2 दिन बिताए कि कैसे इस समस्या को अपने अजगर 3.4 64 बिट संस्करण में ठीक किया जाए: पायथन 3.4.3 (v3.4.3: 9b73f1c3e601, 24 फरवरी 2015, 22:44:40) / MSC v.1600 64 बिट (AMD64) )] win32 पर

समाधान 1, कठिन: (इसे पढ़ने से पहले, नीचे दिए गए पहले समाधान 2 को पढ़ें) अंत में, इससे मुझे मदद मिली:

  1. Visual C ++ 2010 एक्सप्रेस स्थापित करें
  2. विंडोज 7 के लिए माइक्रोसॉफ्ट विंडोज एसडीके v7.1 स्थापित करें
  3. मैन्युअल रूप से फ़ाइल बनाने vcvars64.batमें C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64जो होता है CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64जहां तुम्हारा स्थापित के आधार पर या अन्य पथ
  4. (यह वैकल्पिक प्रतीत होता है) Microsoft Visual C ++ 2010 सर्विस पैक 1 के साथ Microsoft Visual Studio 2010 सर्विस पैक 1 स्थापित करें। WindowsKK 7.1 के लिए कंपाइलर अपडेट
  5. उसके बाद मैंने कोशिश की pip install numpyलेकिन निम्नलिखित त्रुटि प्राप्त की:

    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

    मैं बदल mfinfoकरने Noneमें C:\Python34\Lib\distutils\msvc9compiler.pyइस प्रति https://stackoverflow.com/a/23099820/4383472

  6. आखिरकार pip install numpyकमांड के बाद मेरे एवास्ट एंटीवायरस ने इंस्टॉलेशन प्रक्रिया में हस्तक्षेप करने की कोशिश की, लेकिन मैंने जल्दी से इसे निष्क्रिय कर दिया

संकलित करने के लिए बहुत लंबे समय तक - कई मिनट लगे, मैंने भी सोचा कि एक त्रुटि थी, लेकिन आखिरकार सबकुछ ठीक था।

समाधान 2, आसान: (मुझे पता है कि यह दृष्टिकोण पहले से ही एक उच्च मतदान जवाब में उल्लेख किया गया है , लेकिन मुझे इसे दोहराएं क्योंकि यह वास्तव में आसान है) इस सारे काम से गुजरने के बाद मैं समझ गया कि मेरे लिए सबसे अच्छा तरीका सिर्फ पहले से ही उपयोग करना है से पूर्वापेक्षित बायनेरिज़ भविष्य में http://www.lfd.uci.edu/~gohlke/pythonlibs/ । बहुत कम संभावना है कि मुझे कभी कुछ पैकेज (या पैकेज का एक संस्करण) की आवश्यकता होगी जिसमें यह साइट शामिल नहीं है। स्थापना की प्रक्रिया भी इस तरह से बहुत तेज है। उदाहरण के लिए, स्थापित करने के लिए numpy:

  1. donwload numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl(यदि आपके पास उस साइट से पायथन 3.4 64-बिट है)
  2. कमांड प्रॉम्प्ट या पावरशेल में इसे पाइप के साथ स्थापित करें pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl(या कमांड प्रॉम्प्ट को कैसे खोला जाता है, इस पर निर्भर करते हुए फ़ाइल को पूर्ण पथ)

numpy 4 1.9.2 + mkl ‑ cp34 ‑ कोई भी am win_amd64.whl - उपरोक्त लिंक पर इस फाइल को नहीं पा सकता है।
अमरेश गिरी

7

मैं पायथन 2.7 के तहत विंडोज 10 पर pysph चलाना चाहता था और vcvarsall.bat नहीं मिला (डिस्टिल्स से)

मेरा समाधान निम्नलिखित था:

Python 2.7 के लिए Microsoft Visual C ++ इंस्टॉल करें (जैसे @Michael ने सुझाव दिया है)

विंडोज 10 पर इसे स्थापित किया गया था (मेरा उपयोगकर्ता नाम एंड्रियास है):

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

पर्यावरण चर VS90COMNTOOLS सेट करेंपायथन 2.7 के लिए विज़ुअल सी ++ की स्थापना पथ के लिए (ऊपर पथ देखें)।

यदि यह अभी भी काम नहीं करता है, तो मॉड्यूल में मोडिफाई करें

C:/Python27/lib/distutils

फ़ाइल msvc9compiler.py । इसमें फ़ंक्शन find_vcvarsall खोजें और निम्न संशोधन करें।

लाइन बदलें:

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

साथ में

productdir = os.path.join(toolsdir)

यह वह जगह है जहाँ vcvarsall.bat मेरे मामले में रहता है (जाँच करें, जहाँ vcvarsall.bat आपकी स्थापना में है)।


दिलचस्प है %userprofile%\Appdata\Local\Programs\Commonकि मेरे लिए पर्याप्त खाली है।
ब्रूस गुइंटा

पायथन 2.7 के लिए Microsoft Visual C ++ स्थापित करने के बाद भी?

7

मुझे इस मुद्दे का सामना करना पड़ा जब मैंने अपने अजगर 3.5 पर संख्यात्मक पुस्तकालय स्थापित करने की कोशिश की। समाधान VS2015 स्थापित करना है। मेरे पास VS2008, 2012, 2013 था, जिनमें से कोई भी अजगर 3.5 के साथ संगत नहीं है। अजगर के नए संस्करण में वीएस के नए संस्करणों पर निर्भरता है।

यह भी सुनिश्चित करें कि विज़ुअल स्टूडियो के साथ C ++ कॉमन टूल्स इंस्टॉल किए गए हैं।

यहां छवि विवरण दर्ज करें


6

मैंने उपरोक्त सभी उत्तरों की कोशिश की, और उन सभी को काम नहीं करने के लिए पाया, यह शायद मैं विंडोज 8 का उपयोग कर रहा था और विजुअल स्टूडियो 2012 स्थापित किया था। इस मामले में, यह वही है जो आप करते हैं।

vcvarsall.batफ़ाइल यहाँ स्थित है: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

बस फ़ाइल का चयन करें, और इसे कॉपी करें।

फिर इस निर्देशिका पर जाएं: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

और फ़ाइल पेस्ट करें। और फिर, सब ठीक होना चाहिए।


सब ठीक नहीं है, मैंने आपके उत्तर का पालन किया लेकिन फिर भी मुझे वही त्रुटि मिली।
स्टुपिड_इंटरनेट

6

आप http://go.microsoft.com/?linkid=7729279 से मुक्त विजुअल C ++ 2008 एक्सप्रेस संस्करण डाउनलोड कर सकते हैं , जो स्थापना के दौरान VS90COMNTOOLS पर्यावरण चर सेट करेगा और इसलिए संगत कंपाइलर के साथ निर्माण करेगा।

जैसा कि @PiotrDobrogost ने एक टिप्पणी में उल्लेख किया है, इस अन्य प्रश्न के बारे में उनका उत्तर इस बात के विवरण में है कि विजुअल C ++ 2008 के साथ निर्माण करने के लिए सही चीज क्यों है, लेकिन यह बदल सकता है क्योंकि पायथन के विंडोज बिल्ड विजुअल स्टूडियो के नए संस्करणों में चलते हैं - बिल्डिंग lxml विंडोज पर पायथन 2.7 के लिए


यह भी सुनिश्चित करें कि कोई अन्य संस्करण स्थापित नहीं हैं। मेरे पास इसके साथ एक कठिन समय था। मैंने कंप्यूटर को सुधार दिया, और बस इस संस्करण को स्थापित किया। वीएस के कई संस्करणों को हटाने के बाद से मुझे केवल लंबे समय तक ले जाना चाहिए था।
jmunsch

6

मुझे विंडोज 7 x64 पर पायथन 3.4.1 का उपयोग करने में यह समस्या थी , और दुर्भाग्य से मुझे जिन पैकेजों की आवश्यकता थी, उनके पास उपयुक्त एक्सई या पहिए नहीं थे जिनका मैं उपयोग कर सकता था। इस प्रणाली के लिए कुछ 'वर्कअराउंड्स' की आवश्यकता होती है, जो नीचे विस्तृत होते हैं (और नीचे TLDR होते हैं )।

ऊपर दिए गए Javartech के उत्तर में जानकारी का उपयोग करते हुए , मैंने निर्धारित किया कि मुझे विजुअल स्टूडियो C ++ 2010 (sys.version वापसी MSC v.1600) की आवश्यकता है, इसलिए मैंने उनके जवाब में लिंक से Visual C ++ 2010 एक्सप्रेस स्थापित किया, जो http://go.microsoft है। .com /? linkid = 9,709,949 । मैंने अपडेट के साथ सब कुछ स्थापित किया, लेकिन जैसा कि आप नीचे पढ़ सकते हैं, यह एक गलती थी। इस समय केवल एक्सप्रेस का मूल संस्करण ही स्थापित किया जाना चाहिए (कोई अद्यतन नहीं)।

vcvarsall.bat अब मौजूद था, लेकिन पैकेज को स्थापित करते समय एक नई त्रुटि थी query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']। इस त्रुटि के साथ अन्य स्टैकओवरफ़्लो प्रश्न हैं, जैसे कि पायथन 2.7 के लिए सी मॉड्यूल का निर्माण / स्थापित करते समय त्रुटियां

मैंने उस उत्तर से निर्धारित किया कि 2010 एक्सप्रेस केवल 32-बिट संकलक स्थापित करता है। 64-बिट (और अन्य) संकलक प्राप्त करने के लिए, आपको विंडोज 7.1 एसडीके स्थापित करने की आवश्यकता है। Http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx देखें

हालांकि यह मेरे लिए स्थापित नहीं होगा, और इंस्टॉलर ने त्रुटि वापस कर दी installation failed with return code 5100। मुझे निम्न लिंक पर समाधान मिला: http://support.microsoft.com/kb/2717426 । संक्षेप में, यदि x86 और x64 Microsoft Visual C ++ 2010 के नए संस्करण पुनर्वितरित किए गए हैं, तो वे SDK इंस्टॉलर में लोगों के साथ संघर्ष करते हैं, और पहले अनइंस्टॉल करने की आवश्यकता होती है।

SDK तब स्थापित किया गया था, लेकिन मैंने देखा कि vcvars64.bat अभी भी मौजूद नहीं था C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin, न ही इसके सबफ़ोल्डर। vcvarsall.bat vcvars64 बैच फ़ाइल चलाता है, इसलिए इसके बिना, अजगर पैकेज अभी भी स्थापित नहीं होगा (मैं इस समय दिखाई गई त्रुटि को भूल गया)।

मुझे तब कुछ निर्देश यहां मिले: http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 निर्देशों का पालन करते हुए, मैंने पहले से ही एक्सप्रेस और 7.1 एसडीके स्थापित किया था, इसलिए एसडीके 7.1 SP1 को स्थापित किया, और किया। गुम हेडर फ़ाइल ठीक। मैंने तब मैन्युअल रूप से सामग्री के साथ vcvars64.bat बनाया CALL setenv /x64। मैं उन सभी निर्देशों को यहाँ पेस्ट करूँगा, ताकि वे गुम न हों।

चरण 1 दृश्य स्टूडियो एक्सप्रेस 2010 डाउनलोड करने के लिए है।

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express शुरू करने के लिए एक अच्छी जगह है। इंस्टॉलर डाउनलोड करें, और इसे चलाएं (vc_web.exe)। आपको SQL 2008 अतिरिक्त डाउनलोड की आवश्यकता नहीं है।

64-बिट संकलक के लिए आपको Windows SDK (वर्तमान में 7.1) की भी आवश्यकता होगी - जब तक आप 32-बिट केवल बिल्ड करना चाहते हैं, जो पूरी तरह से समर्थित नहीं हैं ...

http://www.microsoft.com/en-us/download/details.aspx?id=8279 इसे डाउनलोड करने के लिए एक अच्छा शुरुआती बिंदु है - डाउनलोड होने पर आप windk_web.exe चलाना चाहते हैं!

यहाँ डिफ़ॉल्ट स्थापना ठीक है।

अंत में, Windows SDK 7.1 SP1 अद्यतन डाउनलोड और स्थापित करें: http://www.microsoft.com/en-us/download/details.aspx?id=4422

और, लापता हेडर फ़ाइल को ठीक करने के लिए, VS2010 SP1। http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

और, खूनी नरक, VS2010 एक्सप्रेस के लिए लापता बैच फ़ाइल को ठीक करें। यह बिलकुल बेतुका हो रहा है।

C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 में, निम्नलिखित के साथ "vcvars64.bat" बनाएं (आपको व्यवस्थापक के रूप में चलने की आवश्यकता होगी):

कॉल सेटेनव / x64

मेरा अजगर पैकेज अभी भी स्थापित नहीं हुआ (त्रुटि याद नहीं कर सकता)। मुझे तब विशेष SDK 7.1 कमांड प्रॉम्प्ट का उपयोग करने के लिए कुछ निर्देश (नीचे कॉपी किए गए) मिले, देखें: https://mail.python.org/pipermail/distutils-sig/2012-Febdays/018300.html

इस सवाल पर कभी मन नहीं भरता। यहां किसी ने इस आइटम को मेनू पर देखा: प्रारंभ-> सभी कार्यक्रम-> Microsoft Windows SDK v7.1 -> Windows SDK कमांड कमांड

यह एक बैच जॉब चलाता है जो कंपाइलर के लिए काम करने का माहौल सेट करता है। उस प्रॉम्प्ट से, आप "setup.py build" या "setup.py install" टाइप कर सकते हैं।

मैंने निर्देशानुसार Windows SDK 7.1 कमांड प्रॉम्प्ट को खोला, और इसका उपयोग अजगर पैकेज पर easy_install चलाने के लिए किया। और अंत में, सफलता!


TLDR ;

  1. Visual Studio Express 2010 (अधिमानतः अद्यतन पुनर्वितरण या SQL सर्वर के बिना) स्थापित करें।
  2. विंडोज 7.1 एसडीके स्थापित करें
  3. Instal SDK 7.1 SP1 अपडेट और VS2010 SP1 हेडर फ़ाइल को ठीक करें (यह कदम आवश्यक नहीं हो सकता है)।
  4. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.batसामग्री के साथ मैन्युअल रूप से बनाएंCALL setenv /x64
  5. प्रारंभ-> सभी कार्यक्रम-> माइक्रोसॉफ्ट विंडोज एसडीके v7.1 -> विंडोज एसडीके 7.1 कमांड विशेष x64 कमांड प्रॉम्प्ट को खोलने के लिए शीघ्रता से, जिसे तब अजगर / easy_install / pip / etc (virtual_ensts में शामिल है) के साथ उपयोग किया जा सकता है।

4

मेरे लिए इस समस्या के चरणों के नीचे, मैं साइथन एक्सटेंशन के साथ सेटअप बनाने का प्रयास कर रहा था।

  1. Python 2.7 के लिए Microsoft Visual C ++ कंपाइलर स्थापित करें
  2. डिफ़ॉल्ट इंस्टॉल स्थान पायथन के लिए @ C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ होगा यह वास्तव में समस्या को ठीक कर सकता है, आगे बढ़ने से पहले एक बार परीक्षण करें।
  3. यदि यह विफल रहता है, तो चेक करें कि कहां python vcvarsall.bat फ़ाइल के लिए VC ++ में है
  4. नोटपैड में डिस्टुटिल पैकेज की msvc9compiler.py फ़ाइल खोलें।
  5. मेरे बॉक्स में यह था @ C: \ Anaconda2 \ Lib \ distutils \ msvc9compiler.py find_vcvarsall फ़ंक्शन इस फ़ाइल में, संस्करण तर्क मुद्रित करके VC का संस्करण निर्धारित करें। पायथन 2.7 के लिए यह 9.0 होने की संभावना है
  6. अब एक पर्यावरण वैरिएबल VS90COMNTOOLS बनाएं, C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ को Python \ 9.0 \ VC \ Bin के लिए इंगित करें
  7. किसी कारण से डिस्टुटिल्स vcvarsall.bat फ़ाइल को वीसी डायर के भीतर होने की उम्मीद करते हैं, लेकिन अजगर उपकरणों के लिए VC ++ में 9.0 की जड़ में है। इसे ठीक करने के लिए, पथ से "VC" हटाएं (लगभग 247 लाइन के आसपास)

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

उपरोक्त चरणों ने मेरे लिए समस्या तय कर दी।


मुझे उपरोक्त चरणों का अनुसरण करने में लिंकिंग त्रुटि मिल रही है। लिंक: त्रुटि LNK2001: अनसुलझे बाहरी प्रतीक init__init__ build \ temp.win-amd64-2.7 \ Release_ init_ .lib : घातक त्रुटि LNK1120: 1 अनसुलझे बाह्य त्रुटि: कमांड 'C: \\ Users। \\ ma306477 \\ AppData \\ स्थानीय \\ कार्यक्रम \\ आम \\ Microsoft \\ दृश्य C ++ के लिए अजगर \\ 9.0 \\ VC \\ बिन \\ amd64 \\ link.exe 'निकास स्थिति 1120 के साथ विफल रहा
मनीष प्रसाद

3

मैंने कई समाधानों की कोशिश की लेकिन मेरे लिए केवल एक ने काम किया, Microsoft Visual Studio 2008 Express C ++ की स्थापना ।

मुझे यह मुद्दा C (yEnc, जिसमें MS VS के साथ अन्य मुद्दे हैं) में लिखा गया पायथन 2.7 मॉड्यूल मिला। ध्यान दें कि Python 2.7 को MS VS 2008 संस्करण के साथ बनाया गया है, न कि 2010 में!

इस तथ्य के बावजूद कि यह मुफ्त है, एमएस को वीएस 2010 को बढ़ावा देने के बाद से इसे ढूंढना काफी कठिन है। फिर भी, एमएसडीएन अधिकारी बहुत सीधे लिंक अभी भी काम कर रहे हैं: डाउनलोड लिंक के लिए https://stackoverflow.com/a/15319069/2227298 की जाँच करें


हां, VS2008 को स्थापित करने का सबसे अच्छा तरीका है।
पाइलोवर

3

अगर आपने mingw इंस्टॉल किया है

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

काम करता है, माइक्रोसॉफ्ट के बजाय मिंगव कंपाइलर का उपयोग करके निर्माण के लिए पाइप को मजबूर करता है। विवरण (अंतिम पोस्ट) के लिए यहां देखें https://github.com/pypa/pip/issues/18


3

क्या Microsoft Visual C ++ कम्पाइलर Python 2.7 के लिए http://www.microsoft.com/en-us/download/details.aspx?id=44266 पर समाधान नहीं है?


मेरे लिए काम किया। पाइप स्थापित pysftp के अंत में त्रुटि संदेश में यह समाधान थाerror: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27
बॉब स्टेन

3

2016 में इसे हल करने का सबसे आसान तरीका चॉकलेटी और फिर vcpython27पैकेज स्थापित करना है। खुली शक्तियां:

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

2

मुझे नहीं पता कि यह बहुत देर हो चुकी है, लेकिन मुझे पायथन 2.7 के लिए माइक्रोसॉफ्ट विजुअल C ++ कंपाइलर मिला है जो पढ़ता है

यदि आपको इस कंपाइलर पैकेज की आवश्यकता है तो आपको प्राप्त होने वाला विशिष्ट त्रुटि संदेश vcvarsall.bat खोजने में असमर्थ है

उम्मीद है की यह मदद करेगा!


2

मुझे वही समस्या मिली और मैंने इसे फिलहाल हल कर दिया है।

"Google" ने मुझे बताया कि मुझे पायथन 2.7 के लिए "Microsoft Visual C ++ कंपाइलर" स्थापित करने की आवश्यकता है। मैं न केवल उपकरण स्थापित करता हूं, बल्कि विजुअल C ++ 2008 Reditributable भी है, लेकिन यह मदद नहीं करता है। मैंने तब Visual C ++ 2008 एक्सप्रेस संस्करण को स्थापित करने का प्रयास किया। और समस्या चली गई है!

बस विजुअल C ++ 2008 एक्सप्रेस संस्करण को स्थापित करने का प्रयास करें!


2

import setuptoolsविजुअल स्टूडियो के साथ संगतता के लिए मजबूर करने के लिए कॉलिंग बंदर पैच डिस्टुटिल करेगा। कॉलिंग vcvars32.batमैन्युअल रूप से वर्चुअल वातावरण को सेटअप करेगा और अन्य सामान्य त्रुटियों को रोक देगा जो कंपाइलर फेंक देगा। वीएस 2017 के लिए फ़ाइल पर स्थित है

"C: \ Program Files (x86) \ Microsoft दृश्य स्टूडियो \ 2017 \ समुदाय \ VC \ Auxiliary \ Build \ vcvars32.bat"

यहाँ सेटअप स्क्रिप्ट मैं जल्दी से .pyd करने के लिए फ़ाइलों .pyx संकलित करने के लिए उपयोग करते हैं: (नोट: यह 3 पार्टी मॉड्यूल का उपयोग करता है 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()

दरअसल, आयात setuptoolsमदद करता है, साइथन संकलन के मामले में भी ।
बसज

क्या आप थोड़ा और विस्तार से बता सकते हैं? मैन्युअल रूप से vcvars32.bat कैसे कॉल करें? Im साइथन संकलन
जून वांग

2

Visual C ++ 2015 बिल्ड टूल डाउनलोड और इंस्टॉल करने के लिए इस लिंक का उपयोग करें । यह Visual C ++ 14.0 को स्वचालित रूप से डाउनलोड visualcppbuildtools_full.exeऔर इंस्टॉल करेगा वास्तव में Visual Studio स्थापित किए बिना । इंस्टॉलेशन के पूरा होने के बाद, पिप इंस्टॉल इंस्टॉल करें और आपको फिर से एरर नहीं मिलेगा।

मैंने निम्नलिखित प्लेटफ़ॉर्म और संस्करणों पर इसका परीक्षण किया है:

Python 3.6 on Windows 7 64-bit
Python 3.7 on Windows Server 2016 (64-bit system)
Python 3.8 on Windows 10 64-bit

1

यदि आप एक विंडोज बॉक्स पर pyodbc स्थापित करना चाह रहे हैं जिसमें Visual Studio स्थापित नहीं है तो बाइनरी वितरण का उपयोग करके मैन्युअल रूप से pyodbc स्थापित करना एक और विकल्प है।

यह विशेष रूप से उपयोगी है यदि आपके पास उस मशीन पर व्यवस्थापक विशेषाधिकार नहीं है जिसके साथ आप काम कर रहे हैं और एक virtualenv सेट करने का प्रयास कर रहे हैं

कदम:

  1. यहां से नवीनतम विंडोज इंस्टॉलर डाउनलोड करें (pyodbc-XXXwin-Y-py2.7.exe)
  2. 7-ज़िप (या WinRAR या जो भी) का उपयोग करके इंस्टॉलर निष्पादन योग्य खोलें
  3. Pyodbc.pyd और pyodbc-XXX-py2.7.egg- जानकारी निकालें और उन्हें जगह दें [python installation directory or virtualenv]\Lib\site-packages
  4. कोई चरण 4 नहीं है :)

1

पायथॉन 3.4 के साथ, निर्भरता विजुअल स्टूडियो 2010 पर है। विजुअल C ++ 2010 एक्सप्रेस को स्थापित करना मेरे लिए समस्या तय है।

वीएस 2008 या 2013 का उपयोग करने में इसे धोखा देने से यह स्थापित होता है कि मैंने काम नहीं किया।



1

@Monkey द्वारा दिया गया उत्तर सही लोगों में से एक है, लेकिन यह अधूरा है।

यदि आप MinGW का उपयोग करना चाहते हैं , तो आपको "make.exe" प्राप्त करने के लिए C, C ++ और मिनगॉव इंस्टॉलेशन प्रक्रिया के दौरान सुझाए गए अन्य विकास टूल का भी चयन करना चाहिए।

आपके पास en.exe में make.exe के लिए पथ सेट होना चाहिए।

उसका उत्तर पूरा करने के लिए, यहाँ चरण दिए गए हैं:

  1. Mingw32 की बिन निर्देशिका को अपने पर्यावरण चर में जोड़ें
  2. संलग्न C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;पथ के लिए
  3. संपादित करें (यदि यह मौजूद नहीं है तो बनाएं) distutils.cfgफ़ाइल स्थित होने के C:\Python26\Lib\distutils\distutils.cfgलिए:

    [build]
    compiler=mingw32

सुनिश्चित करें कि एक नया cmd.exe खोलकर पर्यावरण चर सेट किया गया है।


32 बिट पायथन मॉड्यूल को 32 बिट मिंगव के साथ संकलित किया जाना चाहिए, जबकि 64 बिट पाइथन मॉड्यूल को 64 बिट मिंगव के साथ संकलित किया जाना चाहिए। सिगविन 64 बिट पर, 2 मिंगव निष्पादन योग्य उपलब्ध हैं: x86_64-w64-mingw32-gccऔर i686-w64-mingw32-gcc। ये निष्पादनयोग्य स्पष्ट रूप से वही हैं जो आप मिंगव से सामान्य रूप से प्राप्त करेंगे (बस एक साइगविन पर्यावरण के अंदर संकलित)।
CMCDragonkai
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.