fout: kan vcvarsall.bat niet vinden

Ik heb geprobeerd het Python-pakket dulwichte installeren:

pip install dulwich

Maar ik krijg een cryptische foutmelding:

error: Unable to find vcvarsall.bat

Hetzelfde gebeurt als ik het pakket handmatig probeer te installeren:

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

Antwoord 1, autoriteit 100%

Update: opmerkingen wijzen erop dat de instructies hier gevaarlijk kunnen zijn. Overweeg het gebruik van de Visual C++ 2008 Express-editie of de speciaal gebouwde Microsoft Visual C++ Compiler voor Python(details) en NIETmet het originele antwoord hieronder. Oorspronkelijke foutmelding betekent dat de vereiste versie van Visual C++ niet is geïnstalleerd.


Voor Windows-installaties:

Tijdens het uitvoeren van setup.py voor pakketinstallaties zoekt Python 2.7 naar een geïnstalleerde Visual Studio 2008. U kunt Python misleiden om een ​​nieuwere Visual Studio te gebruiken door het juiste pad in te stellen in de omgevingsvariabele VS90COMNTOOLSvoordat u aanroept setup.py.

Voer de volgende opdracht uit op basis van de geïnstalleerde versie van Visual Studio:

  • Visual Studio 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • Visual Studio 2012 (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • Visual Studio 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%
  • Visual Studio 2015 (VS14): SET VS90COMNTOOLS=%VS140COMNTOOLS%

WAARSCHUWING: zoals hieronder vermeld, is het onwaarschijnlijk dat dit antwoord werkt als u Python-modules probeert te compileren.

Zie Lxml bouwen voor Python 2.7 op Windowsvoor details.


Antwoord 2, autoriteit 33%

Ik heb de oplossing gevonden.
Ik had exact hetzelfde probleem, en fout, bij het installeren van ‘amara’. Ik had mingw32 geïnstalleerd, maar distutils moesten worden geconfigureerd.

  1. Ik heb Python 2.6 die al was geïnstalleerd.
  2. Ik heb mingw32 geïnstalleerd op C:\programs\mingw\
  3. Voeg de bin-map van mingw32 toe aan uw omgevingsvariabele: voeg C:\programs\mingw\bin;toe aan het PATH
  4. Bewerk (maak indien niet bestaand) bestand distutils.cfgin C:\Python26\Lib\distutils\distutils.cfgte zijn:

    [build]
    compiler=mingw32
    
  5. Voer nu easy_install.exe amarauit.

Zorg ervoor dat de omgeving is ingesteld door een nieuwe cmd.exete openen.


Antwoord 3, autoriteit 32%

Je kunt de gecompileerde versie installeren vanaf http://www.lfd.uci.edu/ ~gohlke/pythonlibs/


Antwoord 4, autoriteit 11%

Wat is er aan de hand? Python-modules kunnen gedeeltelijk zijn geschreven in C of C++(meestal voor snelheid). Als je zo’n pakket probeert te installeren met Pip (of setup.py), moet het die C/C++ compileren vanaf de broncode. Uit de doos zal Pip er brutaal van uitgaan dat de compiler Microsoft Visual C++ is geïnstalleerd. Als je het niet hebt, zie je deze cryptische foutmelding “Fout: kan vcvarsall.bat niet vinden”.

De voorgeschreven oplossing is om een ​​C/C++-compiler te installeren, ofwel Microsoft Visual C++, of MinGW(een open source-project). Het installeren en configureren van beide is echter onbetaalbaar. (Bewerk 2014: Microsoft heeft een speciale C++-compilergepubliceerd voor Python 2.7)

De eenvoudigste oplossing is om Christoph Gohlke’s Windows-installatieprogramma’s (.msi) te gebruiken voor populaire Python-pakketten. Hij bouwt installatieprogramma’s voor Python 2.x en 3.x, 32 bit en 64 bit. U kunt ze downloaden van http://www.lfd.uci.edu/~gohlke/pythonlibs /


Als jij ook denkt dat “Fout: kan vcvarsall.bat niet vinden” een belachelijk cryptisch en nutteloos bericht is, reageer dan op de bug op http://bugs.python.org/issue2943om het te vervangen door een nuttiger en gebruiksvriendelijker bericht.

Ter vergelijking: Ruby wordt geleverd met een pakketbeheerder Gem en biedt een quasi-officiële C/C++-compiler, DevKit. Als u een pakket zonder dit probeert te installeren, ziet u deze behulpzame vriendelijke nuttige melding:

Werk uw PATH bij met buildtools of download de DevKit van http://rubyinstaller.org/downloadsen volg de instructies op http://github.com/oneclick/rubyinstaller/wiki/Development- Pakket

Je kunt een langere tirade over Python-verpakkingen lezen op https://stackoverflow.com/a/13445719/284795


Antwoord 5, autoriteit 9%

Je moet een Microsoft-compiler installeren die compatibel is met de compiler die wordt gebruikt om Python te bouwen. Dit betekent dat je Visual C++ 2008 (of nieuwer, met enige aanpassingen) nodig hebt.

Microsoft levert nu een gebundelde compiler en headers alleenom Python-extensies te kunnen compileren, op de gedenkwaardige URL:

Microsoft Visual C++ Compiler voor Python 2.7

http://aka.ms/vcpython27

Dit is een relatief klein pakket; 85 MB om te downloaden, installeerbaar zonder beheerdersrechten, opnieuw opstarten niet vereist. De naam is een beetje misleidend, de compiler werkt voor elke Python-versie die oorspronkelijk is gecompileerd met Visual C++ 2008, niet alleen voor Python 2.7.

Als u een interactieve Python-prompt start of sys.versionafdrukt, zoekt u naar de MSC-versiereeks; als het MSC v.1500is, kun je deze tool gebruiken.

Van de oorspronkelijke aankondiging tot de distutils-lijst:

Microsoft heeft een compilerpakket voor Python 2.7 uitgebracht om het voor mensen gemakkelijker te maken om hun C-uitbreidingsmodules op Windows te bouwen en te distribueren. De Microsoft Visual C++ Compiler voor Python 2.7 (ook bekend als VC9) is beschikbaar via: http://aka.ms/vcpython27

Dit pakket bevat alle tools en headers die nodig zijn om C-uitbreidingsmodules te bouwen voor Python 2.7 32-bits en 64-bits (merk op dat sommige uitbreidingsmodules afhankelijkheden van derden vereisen, zoals OpenSSL of libxml2 die niet zijn inbegrepen). Andere versies van Python die zijn gebouwd met Visual C++ 2008 worden ook ondersteund, dus “Python 2.7” is gewoon reclame – het werkt prima met 2.6 en 3.2.

Houd er rekening mee dat u setuptools6.0 of nieuwermoet hebben geïnstalleerd (vermeld in het systeem vereisten op de downloadpagina). Het project dat u installeert, moet setuptools.setup()gebruiken, niet distutils, anders werkt de automatische detectie niet.

Microsoft heeft aangegeven dat ze de URL stabiel willen houden, zodat geautomatiseerde scripts er gemakkelijk naar kunnen verwijzen.


Antwoord 6, autoriteit 8%

Ik had net hetzelfde probleem, dus ik zal mijn verhaal hier vertellen in de hoop iemand anders met dezelfde problemen te helpen en hen de paar uur te besparen die ik zojuist heb besteed:

Ik heb mingw (g++ (GCC) 4.6.1) en python 2.7.3 in een Windows 7-box en ik probeer PyCrypto te installeren.

Het begon allemaal met deze fout bij het uitvoeren van setup.py install:

error: Unable to find vcvarsall.bat

Eenvoudig opgelost na het googlen van de fout door mingw op te geven als de compiler naar keuze:

setup.py install build --compiler=mingw32

Het probleem is dat ik toen een andere fout kreeg:

configure: error: cannot run C compiled programs.

Het bleek dat mijn antivirus de uitvoering van een vers gecompileerde .exe blokkeerde. Ik heb zojuist de antivirus “resident shield” uitgeschakeld en ging naar de volgende fout:

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

Dit loste het op: “Installeer een iets oudere versie van MinGW, of bewerk distutils\cygwinccompiler.py in je Python-directory om alle instanties van -mno-cygwin te verwijderen.” (van hier)

Nu kan ik eindelijk aan het werk.


Antwoord 7, autoriteit 3%

Het lijkt erop dat het op zoek is naar VC-compilers, dus je zou kunnen proberen het compilertype te vermelden met -c mingw32, aangezien je msys

hebt

python setup.py install -c mingw32

Antwoord 8, autoriteit 3%

Ik heb python 2.73 en windows 7. De oplossing die voor mij werkte was:

  1. Mingw32’s bin-map toegevoegd aan omgevingsvariabele: voeg PATHtoe met C:\programs\mingw\bin;
  2. distutils.cfggemaakt op C:\Python27\Lib\distutils\distutils.cfgmet daarin:

    [build]
    compiler=mingw32
    

Om te voorkomen dat MinGW de vlag -mno-cygwin niet meer herkent, verwijdert u de vlag in C:\Python27\Lib\distutils\cygwincompiler.py regel 322 tot 326, zodat het er als volgt uitziet:

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

Antwoord 9, autoriteit 2%

Kijk in het bestand setup.pyvan het pakket dat u probeert te installeren. Als het een ouder pakket is, importeert het mogelijk distutils.core.setup()in plaats van setuptools.setup().

Ik kwam dit (in 2015) tegen met een combinatie van deze factoren:

  1. De Microsoft Visual C++ Compiler voor Python 2.7 van http://aka.ms/vcpython27

  2. Een ouder pakket dat distutils.core.setup()

  3. gebruikt

  4. Proberen python setup.py buildte doen in plaats van pipte gebruiken.

Als je een recente versie van pip gebruikt, zal het (monkeypatch) het pakket dwingen setuptools te gebruiken, zelfs als zijn setup.pydistutils aanroept. Als u echter geen pip gebruikt en in plaats daarvan gewoon python setup.py builddoet, gebruikt het bouwproces distutils.core.setup(), wat niet weten over de installatielocatie van de compiler.


Oplossing

Stap 1:Open de juiste Visual C++ 2008-opdrachtprompt

Open het menu Start of het startscherm en zoek naar “Visual C++ 2008 32-bit Command Prompt” (als uw python 32-bit is) of “Visual C++ 2008 64-bit Command Prompt” (als uw python 64 is) -beetje). Voer het uit. De opdrachtprompt zou Visual C++ 2008 … in de titelbalk moeten zeggen.

Stap 2:Omgevingsvariabelen instellen

Stel deze omgevingsvariabelen in in de opdrachtprompt die u zojuist hebt geopend.

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

Referentie http://bugs.python.org/issue23246

Stap 3:Bouw en installeer

cdtoe aan het pakket dat u wilt bouwen, en voer python setup.py builduit en vervolgens python setup.py install. Als u wilt installeren in een virtualenv, activeert u deze voordat u gaat bouwen.


Antwoord 10

Misschien heeft iemand interesse, het volgende werkte voor mij voor het py2exe-pakket.
(Ik heb windows 7 64 bit en portable python 2.7, Visual Studio 2005 Express met Windows SDK voor Windows 7 en .NET Framework 4)

set VS90COMNTOOLS=%VS80COMNTOOLS%

dan:

python.exe setup.py install

Antwoord 11

Ik heb bijna 2 dagen besteed aan het uitzoeken hoe ik dit probleem kon oplossen in mijn python 3.4 64-bits versie: Python 3.4.3 (v3.4.3:9b73f1c3e601, 24 februari 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] op win32

Oplossing 1, moeilijk:(lees voordat u dit leest eerst Oplossing 2 hieronder)
Dit heeft me uiteindelijk geholpen:

  1. installeer Visual C++ 2010 Express
  2. installeer Microsoft Windows SDK v7.1 voor Windows 7
  3. maak handmatig het bestand vcvars64.batin C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64met daarin CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64of een ander pad, afhankelijk van waar je de jouwe hebt geïnstalleerd
  4. (dit lijkt optioneel te zijn) installeer Microsoft Visual Studio 2010 Service Pack 1samen met Microsoft Visual C++ 2010 Service Pack 1-compilerupdate voor de Windows SDK 7.1
  5. daarna probeerde ik pip install numpymaar kreeg de volgende foutmelding:

    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
    

    Ik heb mfinfogewijzigd in Nonein C:\Python34\Lib\distutils\msvc9compiler.pyvolgens deze https://stackoverflow.com/a/23099820/4383472

  6. eindelijk na de opdracht pip install numpyprobeerde mijn avast antivirus het installatieproces te verstoren, maar ik heb het snel uitgeschakeld

Het duurde erg lang – enkele minuten voor numpy om te compileren, ik dacht zelfs dat er een fout was, maar uiteindelijk was alles in orde.

Oplossing 2, eenvoudig:
(Ik weet dat deze aanpak al is genoemd in een antwoord, maar laat me het herhalen, want het is echt makkelijker)
Nadat ik al dit werk had doorgenomen, begreep ik dat de beste manier voor mij is om gewoon al voorgecompileerde binaire bestanden te gebruiken van http://www.lfd.uci.edu/~gohlke/pythonlibs/in de toekomst. Er is een zeer kleine kans dat ik ooit een pakket (of een versie van een pakket) nodig heb dat deze site niet bevat. Het installatieproces is op deze manier ook veel sneller. Om bijvoorbeeld numpyte installeren:

  1. download numpy-1.9.2+mkl-cp34-none-win_amd64.whl(als je Python 3.4 64-bit hebt) van die site
  2. in opdrachtprompt of powershell installeer het met pip pip install numpy-1.9.2+mkl-cp34-none-win_amd64.whl(of het volledige pad naar het bestand, afhankelijk van hoe de opdrachtprompt wordt geopend)

Antwoord 12

Ik wilde pysph uitvoeren op Windows 10 onder Python 2.7 en kreeg vcvarsall.bat niet gevonden (van distutils)

Mijn oplossing was de volgende:

Installeer Microsoft Visual C++ voor Python 2.7 (zoals @Michael voorstelde)

Op Windows 10 werd het geïnstalleerd in (mijn gebruikersnaam is Andreas):

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

Stel omgevingsvariabele VS90COMNTOOLSin op het installatiepad van Visual C++ voor Python 2.7 (zie pad hierboven).

Als het nog steeds niet werkt, pas het dan aan in de module

C:/Python27/lib/distutils

het bestand msvc9compiler.py. Zoek daarin de functie find_vcvarsallen voer de volgende wijziging uit.

Vervang de regel:

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

met

productdir = os.path.join(toolsdir)

Dit is waar vcvarsall.bat zich in mijn geval bevindt (controleer waar vcvarsall.bat zich in uw installatie bevindt).


Antwoord 13

Ik kwam dit probleem tegen toen ik probeerde de numpy-bibliotheek op mijn python 3.5 te installeren. De oplossing is om VS2015 te installeren. Ik had VS2008, 2012, 2013, geen van alle is compatibel met python 3.5. Blijkbaar is een nieuwere versie van python afhankelijk van nieuwere versies van VS.

Zorg er ook voor dat C++ Common Tools is geïnstalleerd met Visual Studio.

voer hier de afbeeldingsbeschrijving in


Antwoord 14

Ik heb alle bovenstaande antwoorden geprobeerd en vond dat ze allemaal niet werkten. Misschien gebruikte ik Windows 8 en had ik Visual Studio 2012 geïnstalleerd. In dit geval is dit wat je doet.

Het bestand vcvarsall.batbevindt zich hier:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

Selecteer het bestand en kopieer het.

Ga dan naar deze map:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

en plak het bestand. En dan zou alles goed moeten zijn.


Antwoord 15

Je kunt de gratis Visual C++ 2008 Express Edition downloaden van http://go.microsoft.com /?linkid=7729279, waarmee de VS90COMNTOOLS-omgevingsvariabele tijdens de installatie wordt ingesteld en daarom wordt gebouwd met een compatibele compiler.

Zoals @PiotrDobrogost in een opmerking vermeldde, gaat zijn antwoord op deze andere vraag in op details over waarom Visual C++ 2008 het juiste is om mee te bouwen, maar dit kan veranderen als de Windows-build van Python overgaat naar nieuwere versies van Visual Studio : Lxml bouwen voor Python 2.7 op Windows


Antwoord 16

Ik had dit probleem bij het gebruik van Python 3.4.1 op Windows 7 x64, en helaas hadden de pakketten die ik nodig had geen geschikte exe of wielen die ik kon gebruiken. Dit systeem vereist enkele ‘oplossingen’, die hieronder worden beschreven (en TLDR onderaan).

Met behulp van de informatie in Jaxrtech’s antwoord hierboven, besloot ik dat ik Visual Studio C++ 2010 nodig had (sys.version return MSC v .1600), dus installeerde ik Visual C++ 2010 Express via de link in zijn antwoord, namelijk http:/ /go.microsoft.com/?linkid=9709949. Ik heb alles met updates geïnstalleerd, maar zoals je hieronder kunt lezen was dit een vergissing. Alleen de originele versie van Express zou op dit moment moeten worden geïnstalleerd (niets bijgewerkt).

vcvarsall.bat was nu aanwezig, maar er was een nieuwe fout bij het installeren van het pakket, query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']. Er zijn andere stackoverflow-vragen met deze fout, zoals Errors tijdens het bouwen/installeren van de C-module voor Python 2.7

Ik heb op basis van dat antwoord vastgesteld dat 2010 Express alleen 32-bits compilers installeert. Om 64-bit (en andere) compilers te krijgen, moet u Windows 7.1 SDK installeren. Zie http://msdn.microsoft.com/en-us/windowsserver/bb980924 .aspx

Dit zou echter niet voor mij installeren, en het installatieprogramma retourneerde de fout installation failed with return code 5100. Ik vond de oplossing via de volgende link: http://support.microsoft.com/kb/2717426. Kortom, als nieuwere versies van x86 en x64 Microsoft Visual C++ 2010 Redistributable’s zijn geïnstalleerd, conflicteren ze met die in het SDK-installatieprogramma en moeten ze eerst worden verwijderd.

De SDK werd toen geïnstalleerd, maar ik merkte dat vcvars64.bat nog steeds niet bestond in C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin, noch in de submappen. vcvarsall.bat voert het vcvars64-batchbestand uit, dus zonder dit zou het python-pakket nog steeds niet installeren (ik ben de fout vergeten die op dat moment werd getoond).

Vervolgens vond ik hier enkele instructies: http://www. cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1
Volgens de instructies had ik Express en 7.1 SDK al geïnstalleerd, dus SDK 7.1 SP1 geïnstalleerd en het ontbrekende headerbestand gerepareerd. Ik heb vervolgens handmatig vcvars64.bat gemaakt met de inhoud CALL setenv /x64. Ik zal al die instructies hier plakken, zodat ze niet verloren gaan.

Stap 1 is het downloaden van Visual Studio Express 2010.

http://www.microsoft.com/visualstudio /nl-nl/producten/2010-edities/express
is een goede plek om te beginnen. Download het installatieprogramma en voer het uit
(vc_web.exe). U hebt de extra download van SQL 2008 niet nodig.

Je hebt ook de Windows SDK (momenteel 7.1) nodig voor de 64-bits
compilers – tenzij u alleen 32-bits builds wilt doen, wat niet het geval is
volledig ondersteund…

http://www.microsoft.com/en -us/download/details.aspx?id=8279is een goede
startpunt om dit te downloaden – u wilt winsdk_web.exe uitvoeren
wanneer gedownload!

De standaardinstallatie hier is prima.

Download en installeer ten slotte de Windows SDK 7.1 SP1-update:
http://www.microsoft.com/en-us/ download/details.aspx?id=4422

En om het ontbrekende headerbestand te herstellen, VS2010 SP1.
http://www.microsoft. com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

En verdomme, repareer het ontbrekende batchbestand voor VS2010 Express. Dit
wordt ronduit absurd.

In C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64,
maak “vcvars64.bat” aan met het volgende (je moet draaien
als beheerder):

BEL setenv /x64

Mijn python-pakket is nog steeds niet geïnstalleerd (kan me de fout niet herinneren). Ik vond toen enkele instructies (hieronder gekopieerd) om de speciale SDK 7.1-opdrachtprompt te gebruiken, zie: https://mail.python.org/pipermail/distutils-sig/2012-February/018300.html

Let op deze vraag. Iemand hier zag dit item in het menu: Start->Alle programma’s->Microsoft Windows SDK v7.1 ->Windows SDK 7.1-opdrachtprompt

Hiermee wordt een batchtaak uitgevoerd die lijkt op het opzetten van een werkomgeving voor de compiler. Vanaf die prompt kun je “setup.py build” of “setup.py install” typen.

Ik opende de Windows SDK 7.1-opdrachtprompt volgens de instructies en gebruikte deze om easy_install op het python-pakket uit te voeren. En eindelijk succes!


TLDR;

  1. Installeer Visual Studio Express 2010 (bij voorkeur zonder bijgewerkte herdistribueerbare bestanden of SQL-server).
  2. Installeer Windows 7.1 SDK
  3. Installeer SDK 7.1 SP1-update en VS2010 SP1-headerbestandscorrectie (deze stap is mogelijk niet vereist).
  4. Maak handmatig C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bataan met inhoud CALL setenv /x64
  5. Start->Alle programma’s->Microsoft Windows SDK v7.1 ->Windows SDK 7.1-opdrachtprompt om de speciale x64-opdrachtprompt te openen, die vervolgens kan worden gebruikt met python/easy_install/pip/etc (inclusief die in virtual_envs).

Antwoord 17

Gebruik deze link om Visual C++ 2015 Build Tools. Het zal automatisch visualcppbuildtools_full.exedownloaden en Visual C++ 14.0installeren zonder Visual Studio daadwerkelijk te installeren. Nadat de installatie is voltooid, probeert u pip install opnieuw en krijgt u de fout niet meer.

Ik heb het getest op het volgende platform en volgende versies:

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

Antwoord 18

De onderstaande stappen hebben dit probleem voor mij opgelost, ik probeerde een installatie te maken met de cython-extensie.

  1. Installeer Microsoft Visual C++ Compiler voor Python 2.7
  2. De standaard installatielocatie is @
    C:\Users\PC-gebruiker\AppData\Local\Programs\Common\Microsoft\Visual C++
    voor Python Dit zou het probleem kunnen oplossen, test een keer voordat u verder gaat.
  3. Als het niet lukt, controleer dan waar in VC++
    for python vcvarsall.bat bestand bevindt zich
  4. Open de msvc9compiler.py
    bestand van distutils-pakket in Kladblok.
  5. In mijn box was dit @
    C:\Anaconda2\Lib\distutils\msvc9compiler.py find_vcvarsall functie
    bepaal in dit bestand de versie van VC door versie af te drukken
    argument. Voor Python 2.7 is het waarschijnlijk 9.0
  6. Maak nu een
    omgevingsvariabele VS90COMNTOOLS, Wijzend naar
    C:\Users\PC-gebruiker\AppData\Local\Programs\Common\Microsoft\Visual C++
    voor Python\9.0\VC\bin
  7. Om de een of andere reden verwacht distutils de
    vcvarsall.bat bestand in VC dir, maar VC++ voor python tools
    heeft het in de root van 9.0 Om dit op te lossen, verwijder “VC” uit de
    path.join (ongeveer rond regel 247)


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

De bovenstaande stappen hebben het probleem voor mij opgelost.


Antwoord 19

Ik heb veel oplossingen geprobeerd, maar slechts één werkte voor mij, de installatie van Microsoft Visual Studio 2008Express C++.

Ik kreeg dit probleem met een Python 2.7-module geschreven in C (yEnc, die andere problemen heeft met MS VS). Merk op dat Python 2.7 is gebouwd met MS VS 2008-versie, niet 2010!

Ondanks het feit dat het gratis is, is het vrij moeilijk te vinden aangezien MS VS 2010 promoot.
Toch werken de MSDN-officiële, zeer directe links nog steeds: check https://stackoverflow.com/a/15319069/2227298voor downloadlinks.


Antwoord 20

Als je mingw hebt geïnstalleerd

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

werkt, waardoor pip gedwongen wordt te bouwen met de mingw-compiler in plaats van die van Microsoft. Zie hier https://github.com/pypa/pip/issues/18voor details (laatste bericht).


Antwoord 21

Is Microsoft Visual C++ Compiler voor Python 2.7 op http:/ /www.microsoft.com/en-us/download/details.aspx?id=44266geen oplossing?


Antwoord 22

De eenvoudigste manier om dit in 2016 op te lossen, is door Chocolatey te installeren en vervolgens het pakket vcpython27. Powershell openen:

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

Antwoord 23

het aanroepen van import setuptoolszal de patch-distutils apen om compatibiliteit met Visual Studio te forceren. Door vcvars32.bathandmatig aan te roepen, wordt de virtuele omgeving ingesteld en worden andere veelvoorkomende fouten die de compiler veroorzaakt, voorkomen. Voor VS 2017 bevindt het bestand zich op

“C:\Program Files (x86)\Microsoft Visual
Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat”

Hier is het installatiescript dat ik gebruik om snel .pyx-bestanden naar .pyd te compileren:
(Opmerking: het gebruikt de module van derden)
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()

Antwoord 24

Ik weet niet of het te laat is, maar ik vond Microsoft Visual C++ Compiler voor Python 2.7die luidt

Het typische foutbericht dat u ontvangt als u dit compilerpakket nodig heeft, is Kan vcvarsall.bat niet vinden

Hopelijk helpt dit!


Antwoord 25

Ik heb hetzelfde probleem en heb het momenteel opgelost.

“Google” vertelde me dat ik “Microsoft Visual C++ Compiler for Python 2.7” moet installeren. Ik installeer niet alleen de tool, maar ook Visual C++ 2008 Reditributable, maar het hielp niet. Ik heb toen geprobeerd Visual C++ 2008 Express Edition te installeren. En het probleem is verdwenen!

Probeer gewoon Visual C++ 2008 Express Edition te installeren!


Antwoord 26

Als u pyodbc wilt installeren op een Windows-box waarop geenVisual Studio is geïnstalleerd, is een andere optie om pyodbc handmatig te installeren met behulp van de binaire distributie.

Dit is met name handig als u geen beheerdersrechten hebt op de computer waarmee u werkt en u probeert een virtualenv.

Stappen:

  1. Download het nieuwste Windows-installatieprogramma hier(pyodbc-XXXwin-Y -py2.7.exe)
  2. Open het uitvoerbare installatieprogramma met 7-Zip (of WinRAR of wat dan ook)
  3. Pak pyodbc.pyd en pyodbc-X.X.X-py2.7.egg-info uit en plaats ze in [python installation directory or virtualenv]\Lib\site-packages
  4. Er is geen stap 4 🙂

Antwoord 27

Met Python 3.4 is de afhankelijkheid van Visual Studio 2010. Het installeren van Visual C++ 2010 Express loste het probleem voor mij op.

Het misleiden om de VS 2008- of 2013-installaties te gebruiken die ik toevallig had, werkte niet.


Antwoord 28

Je kunt easy_install gebruiken in plaats van pip, dat werkt voor mij.


Antwoord 29

Het antwoord van @monkey is een van de juiste, maar het is onvolledig.

Als u MinGWwilt gebruiken, moet u de C, C++ en ook andere ontwikkelingstools die tijdens het MinGW-installatieproces worden voorgesteld om ook “make.exe” te krijgen.

Je moet ook het pad naar make.exe in de omgeving hebben ingesteld.

Om zijn antwoord te voltooien, volgen hier de stappen:

  1. Voeg de bin-map van mingw32 toe aan uw omgevingsvariabelen
  2. Voeg C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;toe aan het PATH
  3. Bewerk (maak als het niet bestaat) het bestand distutils.cfgin C:\Python26\Lib\distutils\distutils.cfgom zijn:

    [build]
    compiler=mingw32
    

Zorg ervoor dat de omgevingsvariabelen zijn ingesteld door een nieuwe cmd.exe te openen.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4 × 1 =

Other episodes