hata: vcvarsall.bat bulunamadı


851

Dulwich Python paketini yüklemeye çalıştım :

pip install dulwich

Ama şifreli bir hata mesajı alıyorum:

error: Unable to find vcvarsall.bat

Paketi manuel olarak yüklemeyi denersem de aynı şey olur:

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

6
İleride başvurmak için bunu hangi platformda kullandığınızı görmek güzel olurdu.
viam0Zah

47
Bunu en hata için oy bir gülünç şifreli ve yardımcı hata mesajı lütfen düşünüyorsanız bugs.python.org/issue2943
Albay Panik

48
Microsoft şimdi bir çözüm sunuyor: microsoft.com/en-us/download/details.aspx?id=44266
Martijn Pieters

6
@MartijnPieters Tekerlek ve setuptools 7.0 ile sağladığınız bağlantıyı indirip yüklemeyi denedim ama işe yaramıyor 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
Mesajımı

4
Steve Dower (Microsoft'un Python ekibinden bir adam) bu konuyla ilgili okumaya değer bir blog yazısı yazdı: blogs.msdn.microsoft.com/pythonengineering/2016/04/11/…
Cody Piersall

Yanıtlar:


683

Güncelleme : Yorumlar, buradaki talimatların tehlikeli olabileceğine işaret ediyor. Visual C ++ 2008 Express sürümü veya amaca kullanmayı düşünün Python için Microsoft Visual C ++ derleyicisi ( ayrıntılar ) ve DEĞİL aşağıda orijinal cevabını kullanarak. Özgün hata iletisi, gerekli Visual C ++ sürümünün yüklü olmadığı anlamına gelir.


Windows kurulumları için:

Paket yüklemeleri için setup.py dosyasını çalıştırırken, Python 2.7 yüklü bir Visual Studio 2008'i arar. Aramadan VS90COMNTOOLSönce ortam değişkeninde doğru yolu ayarlayarak Python'u daha yeni bir Visual Studio kullanması için kandırabilirsiniz setup.py.

Yüklü Visual Studio sürümüne göre aşağıdaki komutu yürütün:

  • 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%

UYARI: Aşağıda belirtildiği gibi, python modüllerini derlemeye çalışıyorsanız bu cevabın çalışması olası değildir.

Ayrıntılar için Windows'ta Python 2.7 için lxml oluşturma konusuna bakın .


21
Benim için yaptı :(
fmuecke

8
@Gili: Görünüşe göre bu sorun değişkenteki boşluklardan kaynaklanıyor, tırnak içine almayı deneyin. Benim için% VS100COMNTOOLS% = "C: \ Program Dosyaları (x86) \ Microsoft Visual Studio 10.0 \
Common7

7
Bu pek çok şey için işe yaramaz, çünkü Python VS2008'e güvenir. Şu cevaba bir göz atın: stackoverflow.com/questions/6551724/…
shezi

182
UYARI!!! Bu YANLIŞ cevap. Sen olmamalıdır Python C uzantısı derleme hiçbir koşulda bir bu iki (sürümleri) derleyiciler muhtemelen uyumsuz C çalışma zamanı kitaplıkları sahip olacak şekilde Python kendisi derlemek için kullanılan farklı (sürüm) derleyici kullanarak. Daha fazla ayrıntı için bu cevaba bakınız.
Piotr Dobrogost

72
Ücretsiz Visual C ++ 2008 Express Edition'ı, yükleme sırasında VS90COMNTOOLS ortam değişkenini ayarlayacak ve bu nedenle uyumlu bir derleyici ile oluşturacak olan go.microsoft.com/?linkid=7729279 adresinden indirebilirsiniz.
Eric Smith

225

Çözümü buldum. Aynı sorunu ve hata vardı, 'amara' yüklerken. Mingw32 yükledim, ancak dağıtımların yapılandırılması gerekiyordu.

  1. Önceden yüklenmiş Python 2.6'm var.
  2. Mingw32'yi C:\programs\mingw\
  3. Sizin çevresel değişken mingw32 bin dizinini ekleyin: append c:\programs\MinGW\bin;için PATH
  4. Şu konumda bulunan distutils.cfg dosyasını düzenleyin (yoksa oluşturun) C:\Python26\Lib\distutils\distutils.cfg:

    [build]
    compiler=mingw32
  5. Şimdi koş easy_install.exe amara.

Yeni bir pencere açarak ortamın ayarlandığından emin olun cmd.exe.


45
Bu Python2.6 için harika çalışıyor, ancak bazı nedenlerden dolayı Python2.7 üzerinde çalışamıyorum. Paket kaynağımı indirip 'python setup.py install --compile = mingw32' kullanarak yüklersem çalışır, ancak bir nedenle easy_install veya pip kullanarak hala vcvarsall'ı bulmaya çalışır.
Jonathan Hartley

2
Sonunda ekleyerek Python (x, y) 2.7 yüklemek için scikits.image var C:\msysgit\mingw\mingw32\binve C:\msysgit\mingw\binkullanıcı PATH ve çalıştırmadan önce Spyder yeniden başlatmadan pip installtekrar
Endolit

20
Gerek yoktur hiç çünkü bir ortam değişkeni değişikliği yeniden başlatmak için. Yeni bir cmd.exe işlemi açmak yeterlidir.
Haziran'da Tomalak

11
Bunu hala düzeltemedim. Bu hatadır: gcc: error: unrecognized command line option '-mno-cygwin' error: Setup script exited with error: command 'gcc' failed with exit status 1aftereasy_install.exe amara
user

5
@user, şu dosyayı açmalısınız: dosyadaki C:\Python27\Lib\distutils\cygwincompiler.pytüm yinelemeleri kaldırmalısınız –mno-cygwin; Bunun nedeni, GCC'nin son sürümlerinin –mno-cygwinseçeneği kaldırmış olması ve orada olmaması gerektiğidir.
Zeinab Abbasimazar

220

Derlenmiş sürümü http://www.lfd.uci.edu/~gohlke/pythonlibs/ adresinden yükleyebilirsiniz.


15
Sadece bir ipucu: çalıştırarak virtualenv bu siteden paketini yükleyebilirsiniz easy_install binary_installer_built_with_distutils.exedoğrultusunda kapsamınızı, virtualenv bu cevap .
yangzh

14
Her Python Windows geliştiricisi bunu bilmelidir
Lise öğrencisi

1
Ayrıca wheel convert ....exebu yükleyicileri ve sonra istediğiniz zaman pip ile yükleyebilirsiniz.
Zooba

3
Daha kesin olmak gerekirse lfd.uci.edu/~gohlke/pythonlibs/#mysql-python ve bir kez açık indirilen yönetici ve kaçak olarak bir terminalpython -m pip install <filename>
Arun

Tanrı'nın Holly annesi, tam bu noktada. Bir cazibe gibi çalışır, TY :)
Amir

162

Mingw yerine Visual Studio C ++ ile derlemek istiyorsanız ...

  1. python.exeHangi VC ++ sürümünün derlendiğini görüntülemek için çalıştırın (örnek aşağıda gösterilmiştir).

    Öyle önemli Python beri derlendiği anlamına Visual C ++ derleyicisi ilgili sürümünü kullanmak için distilutils 'ın get_build_versionönler (sürümlerini karıştırma Piotr uyarısı başına ).

    • Sarı (üstte), MSC v.1500 ile derlenmiş Python 2.7'dir (Visual Studio C ++ 2008)
    • Kırmızı (alt), MSC v.1600 (Visual Studio C ++ 2010) ile derlenmiş Python 3.4.1'dir

    MSC v.1500 ile derlenmiş Python 2.7 ve MSC v.1600 ile derlenmiş Python 3.4.1 komut satırını gösteren örnek

  2. Dahili VC ++ sürümünü karşılık gelen Visual Studio sürümüyle eşleştirmek için aşağıdaki tabloyu kullanın [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. Önceki adımdan karşılık gelen Visual Studio C ++ sürümünü indirin ve yükleyin.
    VC ++ 'nın belirli sürümleri için ek notlar aşağıda listelenmiştir.

    Visual Studio C ++ 2008 için notlar

    İçin sadece 32 bit derleyici, indir Visual Studio C ++ 2008 Express Edition .

    64 bit derleyiciler [2] [3] için, Windows 7 ve .NET Framework 3.5 SP1 için Windows SDK'yı indirin .

    • Developer Tools >> Visual C++ CompilersAksi halde ihtiyacınız olmayan SDK araçlarını yüklemek için zamandan ve disk alanından tasarruf etmek dışında her şeyin işaretini kaldırın .

    Visual Studio C ++ 2010 için notlar

    Microsoft'a göre, Visual Studio 2010 SP1'i yüklediyseniz, VC ++ için derleyicileri ve kitaplıkları kaldırmış olabilir.
    Bu durumda, Visual C ++ 2010 SP1 Derleyici Güncelleştirmesi'ni indirin .

    Visual Studio C ++ 2015 için notlar

    Visual Studio IDE'ye ihtiyacınız yoksa, Visual Studio C ++ 2015 Derleme Araçları'nı indirin .

    Visual Studio C ++ 2017 için notlar

    Visual Studio IDE'ye ihtiyacınız yoksa, Visual Studio 2017 için Derleme Araçları'nı indirin .

    Öneri : Hem 32 hem de 64 bit Python yüklemeniz varsa, ayrı Python ortamları oluşturmak için virtualenv'i kullanmak isteyebilirsiniz, böylece hangi Python sürümünün seçileceğini seçmek için yolunuzla uğraşmadan birini veya diğerini kullanabilirsiniz kullanın.

@Srodriguex'e göre , Python'un bu yanıtı izleyerek birkaç toplu iş dosyasını yerine birkaç toplu iş dosyasını kopyalayarak toplu iş dosyasını elle yüklemeyi (4-6. Adımlar) atlayabilirsiniz . Bu işe yaramazsa, başlangıçta benim için çalışan aşağıdaki adımlar.

  1. cmd.exe

  2. C uzantısı gerektiren bir şey yüklemeyi denemeden önce , VC ++ derleyicisinin ortamını oturuma yüklemek için aşağıdaki toplu iş dosyasını çalıştırın (ortam değişkenleri, derleyicinin yolu vb.).

    Yürütme:

    • 32 bit Derleyiciler:

      Not : 32 bit Windows yüklemelerinde yalnızca C:\Program Files\beklendiği gibi olur

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

    • 64-bit Derleyiciler:

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

      Not : Evet, yerel 64 bit derleyiciler içeridedir Program Files (x86). Bana nedenini sorma.
      Ayrıca, merak ediyorsanız neyi arasındaki fark vcvars64.batve vcvarsx86_amd64.batya arasındaki daha önemlisi fark amd64ve x86_amd64eski yerel 64 bit derleyici araçları için geçerlidir, ikincisi 32-bit Windows yüklemesinde çalışabilir çapraz derleyiciler 64-bit vardır .

    Güncelleme:
    Herhangi bir nedenle alıyorsanız error: ... was unexpected at this time.nerede ...bazı karakterler dizisidir, o zaman yol değişken ekstra alıntılarla veya başıboş karakterler gibi herhangi bir yabancı karakter yok olmadığını kontrol etmek gerekir. Toplu iş dosyası, ilk başta anlam ifade edemezse oturum yolunuzu güncelleyemez.

  3. Bu iyi giderse, hangi VC ++ sürümüne ve hangi komutu çalıştırdığınıza bağlı olarak aşağıdaki mesajlardan birini almalısınız:

    32 bit derleyici araçları için:
    Setting environment for using Microsoft Visual Studio 20xx x86 tools.

    64 bit derleyici araçları için:
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. Şimdi kurulumu python setup.py installveyapip install pkg-name

  5. Umut ve parmaklarınızı çapraz gezegenlerin VC ++ işbirliği için doğru hizalanmış.


Düz bir şekilde 64 bit'e gitme ağrısından geçmeniz için yeterince tavsiye edemezsiniz . 4 gb'tan fazla adres alanına ihtiyaç duymanız sadece bir zaman meselesi. Ben 32 bit gittikten sonra acı verici bir deneyimden konuşuyorum çünkü çok daha kolaydı, sonra bağımlılıklar dahil olmak üzere her şeyi kaldırmak zorunda kaldım ve 64 bit. Neredeyse bütün bir hafta sonu.
Thomas Browne

1
Sonra tekrar, bunun gibi daha büyük görevler için kaç kişinin Python'u kullanması gerektiğini unutuyorum. Ve @ThomasBrowne, bunun acı verici ve gereksiz bir deneyim kötülüğü olduğuna eminim. Buna bakıyorum ve umarım bir şeyler bulabilirim. Ana sorun, Visual Studio C ++ 2008 Express'in 64 bit derleyici ile gelmemesiydi, ama eminim burada bir yerlerde.
Josh Bowden

Sadece ihtiyacınız varsa 64 bit derleyicileri nasıl alacağınızı kapsayan daha fazla bilgi ile güncelleyin.
Josh Bowden

Benim durumumda, yukarıdaki 1. adımı izledim ve bu cevabı takiben geri kalanını atladım . Şimdi .bat çalıştırmanın sıkıntısından kaçınarak paketleri yükleyebiliyorum.
srodriguex

@srodriguex bu durumda iyi görünüyor, Python aradığı ...\VC\bin\vcvarsamd64.batve kullanarak 64 bit derleyici araçların PATH içine yüklü olduğunu varsayar ...\VC\bin\amd64\vcvarsamd64.bat.
Josh Bowden

73

Neler oluyor? Python modülleri C veya C ++ ile yazılabilir (genellikle hız için). Pip (veya setup.py) ile böyle bir paket yüklemeye çalışırsanız , o C / C ++ kaynağından derlemek gerekir. Kutunun dışında, Pip, Microsoft Visual C ++ derleyicisinin yüklü olduğunu zanneder. Eğer sahip değilseniz, bu hata mesajı "Hata: vcvarsall.bat bulunamadı" mesajını göreceksiniz.

Öngörülen çözüm, Microsoft Visual C ++ veya MinGW (açık kaynaklı bir proje) olan bir C / C ++ derleyicisini kurmaktır . Ancak, her ikisinin de kurulması ve yapılandırılması oldukça zordur. (Edit 2014: Microsoft, Python 2.7 için özel bir C ++ derleyicisi yayınladı )

En kolay çözüm, popüler Python paketleri için Christoph Gohlke'nin Windows yükleyicilerini (.msi) kullanmaktır. Python 2.x ve 3.x, 32 bit ve 64 bit için yükleyiciler kurar. Bunları http://www.lfd.uci.edu/~gohlke/pythonlibs/ adresinden indirebilirsiniz.


Siz de "Hata: vcvarsall.bat bulunamıyor" gülünç derecede şifreli ve yararsız bir mesaj olduğunu düşünüyorsanız, lütfen daha yararlı ve kullanıcı ile değiştirmek için http://bugs.python.org/issue2943 adresindeki hatayı yorumlayın. dostça mesaj.

Karşılaştırma için, Ruby bir paket yöneticisi Gem ile birlikte gelir ve yarı resmi bir C / C ++ derleyicisi DevKit sunar. Onsuz bir paket yüklemeye çalışırsanız, bu yararlı ve kullanışlı yararlı mesajı görürsünüz:

Lütfen PATH'nizi oluşturma araçlarını içerecek şekilde güncelleyin veya DevKit'i http://rubyinstaller.org/downloads adresinden indirin ve http://github.com/oneclick/rubyinstaller/wiki/Development-Kit adresindeki talimatları izleyin.

Python ambalajları hakkında daha uzun bir süre https://stackoverflow.com/a/13445719/284795 adresinden okuyabilirsiniz.


Bu önceden derlenmiş yürütülebilir dosyayı sanal ortamıma yüklemek için pip'i nasıl kullanabilirim?
Shailen

@shailenTJ iyi soru. Hiç yapmadım, ama stackoverflow.com/a/5442340/284795
Albay Panic

Bu, bildiğim en iyi / en kolay çözümdü. Teşekkürler.
user1477388

Bu Edit 2014 benim için en iyi cevap. Kolay kaçırılan talimatlar: setuptoolssürümüne 6.0veya daha yüksek bir sürüme güncelleme yaptığınızdan emin olun pip install setuptools --upgrade.
orlade

64

Python'u oluşturmak için kullanılan derleyiciyle uyumlu bir Microsoft derleyicisi kurmanız gerekir. Bu, Visual C ++ 2008'e (veya daha yeni, bazı ayarlarla ) ihtiyacınız olduğu anlamına gelir .

Microsoft, şimdi bir paket derleyici besler ve başlıkları sadece unutulmaz URL'de, Python uzantıları derlemek edebilmek için:

Python 2.7 için Microsoft Visual C ++ Derleyicisi

http://aka.ms/vcpython27

Bu nispeten küçük bir pakettir; İndirmek için 85MB, yönetici ayrıcalıkları olmadan yüklenebilir, yeniden başlatma gerekmez. Adı biraz yanıltıcıdır, derleyici sadece Python 2.7 değil, Visual C ++ 2008 ile derlenmiş herhangi bir Python sürümü için çalışacaktır.

Bir Python etkileşimli istemi başlatır veya yazdırırsanız sürüm dizesini sys.versionarayın MSC; öyleyse MSC v.1500bu aracı kullanabilirsiniz.

Gönderen distutils listesine orijinal duyuru :

Microsoft, insanların C uzantı modüllerini Windows üzerinde oluşturmalarını ve dağıtmalarını kolaylaştırmak için Python 2.7 için bir derleyici paketi yayımladı. Python 2.7 için Microsoft Visual C ++ Derleyicisi (aka VC9) şu adresten edinilebilir: http://aka.ms/vcpython27

Bu paket, Python 2.7 32 bit ve 64 bit için C genişletme modülleri oluşturmak için gereken tüm araçları ve başlıkları içerir (bazı genişletme modüllerinin dahil olmayan OpenSSL veya libxml2 gibi 3. taraf bağımlılıklara gereksinimi olduğunu unutmayın). Python'un Visual C ++ 2008 ile oluşturulmuş diğer sürümleri de desteklenmektedir, bu nedenle "Python 2.7" sadece reklamdır - 2.6 ve 3.2 ile iyi çalışır.

setuptools6.0 veya daha yeni bir sürümün yüklü olması gerektiğini unutmayın (indirme sayfasındaki sistem gereksinimlerinde listelenmiştir). Yüklediğiniz proje kullanmamalı setuptools.setup(), aksi distutilstakdirde otomatik algılama çalışmaz.

Microsoft, otomatik komut dosyalarının kolayca başvurabilmesi için URL'yi sabit tutmak istediklerini belirtti.


2
Diğer yorumuma göre, setuptoolsile güncel olduğundan emin olabilirsiniz pip install setuptools --upgrade.
orlade

İlgili mantık neden olduğunu madde içine baktım setuptoolsziyade distutilsmodüllerini temel işlevi olduğunu ve ilgili kod, ama bunun eski bir sürümünü var, sonuçta -. distutilsKoruyucular, olası tüm MSSDK varyasyonlarını desteklemekten vazgeçmiş gibi görünüyor ve bu işi setuptoolsdaha hevesli meslektaşlarına attı .
ivan_pozdeev

1
@ivan_pozdeev: Python serbest bırakma döngüsünde setuptoolsbulunandan çok daha fazla distutilsserbest bırakabilir. Ve distitutilsaslında, yerine koymak için yeni sistemler üzerinde çalışmak ile, bir tür bakım moduna geçti. Bu iş yerine durdu.
Martijn Pieters

Cython kullandığı distutils, içe aktarma setuptools gereken hangi maymun yamalar distutils: github.com/cython/cython/wiki/CythonExtensionsOnWindows
denfromufa

54

Ben sadece aynı sorunu yaşadım, bu yüzden burada aynı sorunları olan başka birine yardımcı olacağını umarak hikayemi anlatacağım ve az önce harcadığım birkaç saati kurtaracağım:

Bir windows 7 kutusunda mingw (g ++ (GCC) 4.6.1) ve python 2.7.3 var ve PyCrypto yüklemeye çalışıyorum.

Her şey setup.py kurulumunu çalıştırırken bu hatayla başladı:

error: Unable to find vcvarsall.bat

Tercih ettiğiniz derleyici olarak mingw belirtilerek hatayı googledikten sonra kolayca çözülür:

setup.py install build --compiler=mingw32

Sorun o zaman farklı bir hata var:

configure: error: cannot run C compiled programs.

Antivirüsümün yeni derlenmiş bir .exe dosyasının yürütülmesini engellediği ortaya çıktı. Sadece anti-virüs "yerleşik kalkan" ı devre dışı bıraktım ve bir sonraki hataya gittim:

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

Bunu çözdü: "Ya biraz daha eski bir MinGW sürümü yükleyin ya da tüm -mno-cygwin örneklerini kaldırmak için Python dizininizdeki distutils \ cygwinccompiler.py dosyasını düzenleyin." ( buradan )

Şimdi nihayet çalışmaya başlayabilirim.


7
Ayrıca Python kütüphanesinin MinGW uyumlu bir versiyonuna ihtiyacınız olacaktır. Daha fazla bilgi için eli.thegreenplace.net/2008/06/28/…
Gili


23

Görünüşe göre VC derleyicileri arıyor, bu yüzden -c mingw32msys'e sahip olduğunuz için derleyici türünden bahsetmeyi deneyebilirsiniz

python setup.py install -c mingw32

16
Sadece clairify için çalışan komut şu şekildedir: python setup.py build --compiler=mingw32arkasındanpython setup.py install
Emil Stenström

Python setup.py build --compiler = mingw32 çalıştırdıktan sonra ImportError alıyorum: Cyconhon Anaconda altında kurulurken Cython.Distutils adlı modül yok. Herhangi bir öneri?
Serendipity

20

Python 2.73 ve windows 7 var. Benim için çalışan çözüm:

  1. Ortam değişkenine mingw32'nin bin dizini eklendi: PATH with appendC:\programs\mingw\bin;
  2. İçinde bulunan distutils.cfg oluşturuldu C:\Python27\Lib\distutils\distutils.cfg:

    [build]
    compiler=mingw32

MinGW'nin artık -mno-cygwin bayrağını tanımamasıyla başa çıkmak için, C: \ Python27 \ Lib \ distutils \ cygwincompiler.py line 322 ila 326'daki bayrağı kaldırın, şöyle görünür:

  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.pyYüklemeye çalıştığınız paketin dosyasına bakın . Daha eski bir paketse, bunun distutils.core.setup()yerine içe aktarılıyor olabilir setuptools.setup().

Ben (2015 yılında) bu faktörlerin bir kombinasyonu ile koştu:

  1. Http://aka.ms/vcpython27 adresinden Python 2.7 için Microsoft Visual C ++ Derleyicisi

  2. Kullanan eski bir paket distutils.core.setup()

  3. python setup.py buildKullanmak yerine yapmaya çalışıyorum pip.

setup.pyPip'in son bir sürümünü kullanırsanız, distutils çağrısı olsa bile paketi setuptools'u kullanmaya zorlar (monkeypatch) . Ancak, pip kullanmıyorsanız ve bunun yerine sadece yapıyorsanız python setup.py build, distutils.core.setup()derleyici yükleme konumu hakkında bilgi sahibi olmayan derleme işlemi kullanılır .


Çözüm

Adım 1: Uygun Visual C ++ 2008 Komut İstemi'ni açın

Başlat menüsünü veya Başlangıç ​​ekranını açın ve "Visual C ++ 2008 32 bit Komut İstemi" (python'unuz 32 bit ise) veya "Visual C ++ 2008 64 bit Komut İstemi" (python'unuz 64 bit ise) için arama yapın. . Çalıştır. Komut isteminde başlık çubuğunda Visual C ++ 2008 ... yazmalıdır.

2. Adım: Ortam değişkenlerini ayarlama

Bu ortam değişkenlerini yeni açtığınız komut isteminde ayarlayın.

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

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

3. Adım: Derleme ve yükleme

cdOluşturmak istediğiniz paketin ve run python setup.py buildardından, python setup.py install. Bir virtualenv'e kurmak istiyorsanız, derlemeden önce etkinleştirin.


paketinizi <code> python setup.py build </code> yerine <code> pip </code> kullanarak da oluşturabilirsiniz
aronadaal

9

Belki birisi ilgilenebilir, aşağıdakiler benim için py2exe paketi için çalıştı. (Windows 7 64 bit ve taşınabilir python 2.7, Windows 7 ve .NET Framework 4 için Windows SDK ile Visual Studio 2005 Express var)

set VS90COMNTOOLS=%VS80COMNTOOLS%

sonra:

python.exe setup.py install

Hayır, haklısın, ne olduğundan emin değilim, orijinal yorumu sileceğim.
Dave Challis

1
Çok kullanışlı!! Benim durumumda, 'VS90COMNTOOLS =% VS110COMNTOOLS%' ayarladım.
jrvidotti

@Exzile: evet, bu komutları aynı komut istemi oturumuna yazıyorsunuz
Stefano Fenu

BUNU YAPMA!!! Daha fazla ayrıntı için bu cevaba bakınız.
İsimsiz

8

Python 3.4 64 bit sürümümde bu sorunun nasıl çözüleceğini bulmak için neredeyse 2 gün geçirdim: Python 3.4.3 (v3.4.3: 9b73f1c3e601, 24 Şub 2015, 22:44:40) [MSC v.1600 64 bit (AMD64 )] win32'de

Çözüm 1, zor: (bunu okumadan önce, aşağıdaki Çözüm 2'yi okuyun) Son olarak, bana yardımcı olan bu oldu:

  1. Visual C ++ 2010 Express'i yükleyin
  2. 7 için Microsoft Windows SDK v7.1'i yükleyin
  3. El ile dosya oluşturmak vcvars64.batiçinde C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64içeren CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64size ait yüklü yere bağlı veya başka bir yol
  4. (bu isteğe bağlı gibi görünüyor) Windows SDK 7.1 için Microsoft Visual Studio 2010 Service Pack 1 ile birlikte Microsoft Visual C ++ 2010 Service Pack 1 Derleyici Güncelleştirmesi'ni yükleyin
  5. Bundan sonra denedim pip install numpyama aşağıdaki hatayı aldım :

    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

    Değiştim mfinfoiçin Nonede C:\Python34\Lib\distutils\msvc9compiler.pybu başına https://stackoverflow.com/a/23099820/4383472

  6. nihayet pip install numpykomut sonra benim avast antivirüs kurulum sürecine müdahale etmeye çalıştı, ama hızlı bir şekilde devre dışı

Çok uzun sürdü - numpy'nin derlenmesi için birkaç dakika, hatta bir hata olduğunu düşündüm, ama sonunda her şey yolundaydı.

Çözüm 2, kolay: (Bu yaklaşımın çok yüksek oy alan bir cevapta zaten bahsettiğini biliyorum , ama gerçekten daha kolay olduğu için tekrarlayayım) Tüm bu çalışmaları yaptıktan sonra benim için en iyi yolun zaten kullanmak olduğunu anladım gelecekte http://www.lfd.uci.edu/~gohlke/pythonlibs/ adresinden önceden derlenmiş ikili dosyalar . Bu sitenin içermediği bir pakete (veya bir paketin sürümüne) ihtiyacım olma ihtimali çok düşüktür. Kurulum süreci de bu şekilde çok daha hızlı. Örneğin, yüklemek için numpy:

  1. numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whlo siteden donwload (Python 3.4 64-bit varsa)
  2. komut isteminde veya powershell'de pip ile yükleyin pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl(veya komut isteminin nasıl açıldığına bağlı olarak dosyanın tam yolu)

numpy ‑ 1.9.2 + mkl ‑ cp34 ‑ yok ‑ win_amd64.whl - bu dosyayı yukarıdaki bağlantıda bulamıyorum.
Amresh Giri

7

Python 2.7 altında Windows 10'da pysph çalıştırmak istedim ve vcvarsall.bat bulunamadı (distutils)

Benim çözümüm şuydu:

Python 2.7 için Microsoft Visual C ++ yükleyin (önerilen @Michael gibi)

Windows 10'da yüklü (kullanıcı adım Andreas):

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

Ortam değişkeni VS90COMNTOOLS , Python 2.7 için Visual C ++ yükleme yoluna ayarlayın (yukarıdaki yola bakın).

Hala çalışmıyorsa, modülde modifiy

C:/Python27/lib/distutils

msvc9compiler.py dosyası . İçinde find_vcvarsall fonksiyonunu bulun ve aşağıdaki değişiklikleri yapın.

Hattı değiştirin:

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

ile

productdir = os.path.join(toolsdir)

Bu benim durumumda vcvarsall.bat'ın bulunduğu yerdir (kontrol, vcvarsall.bat kurulumunuzda nerede).


İlginçtir %userprofile%\Appdata\Local\Programs\CommonBenim için boş.
Bryce Guinta

Python 2.7 için Microsoft Visual C ++ yükledikten sonra bile?
chiefenne

7

Python 3.5 üzerinde numpy kitaplığı yüklemeye çalıştığımda bu sorunla karşılaştım. Çözüm VS2015'i kurmaktır. VS2008, 2012, 2013 vardı, hiçbiri python 3.5 ile uyumlu değildi. Görünüşe göre yeni python sürümü VS'nin yeni sürümlerine bağımlı.

Ayrıca Visual Studio ile C ++ Common Tools yüklendiğinden emin olun.

resim açıklamasını buraya girin


6

Yukarıdaki tüm cevapları denedim ve hepsini işe yaramadı, belki de Windows 8 kullanıyordum ve Visual Studio 2012'yi yükledim. Bu durumda, yaptığınız şey budur.

vcvarsall.batDosyası burada bulunmaktadır: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

Sadece dosyayı seçin ve kopyalayın.

Ardından şu dizine gidin: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

ve dosyayı yapıştırın. Ve sonra, her şey iyi olmalı.


Her şey iyi değil cevabını takip ettim ama yine de aynı hatayı alıyorum.
Stupid_Intern

6

Yükleme sırasında VS90COMNTOOLS ortam değişkenini ayarlayacak ve bu nedenle uyumlu bir derleyici ile oluşturulacak ücretsiz Visual C ++ 2008 Express Edition'ı http://go.microsoft.com/?linkid=7729279 adresinden indirebilirsiniz.

@PiotrDobrogost'un bir yorumda belirttiği gibi, bu diğer soruya cevabı, Visual C ++ 2008'in neden inşa etmek için doğru şey olduğuna dair ayrıntılara giriyor, ancak Python'un Windows derlemesi Visual Studio'nun yeni sürümlerine geçtikçe değişebilir: Building lxml Windows'da Python 2.7 için


Ayrıca yüklü başka sürüm olmadığından emin olun. Bununla zorlandım. Bilgisayarı yeniden biçimlendirdim ve sadece bu sürümü yükledim. VS'nin birden fazla versiyonunu kaldırmak beni çok uzun sürebilirdi.
jmunsch

6

Windows 7 x64'te Python 3.4.1'i kullanırken bu sorunu yaşadım ve maalesef ihtiyacım olan paketler kullanabileceğim uygun exe veya tekerleklere sahip değildi. Bu sistem, aşağıda ayrıntıları verilen (ve altta TLDR ) birkaç 'geçici çözüm' gerektirir .

Yukarıdaki Jaxrtech'in cevabındaki bilgileri kullanarak, Visual Studio C ++ 2010'a (sys.version dönüş MSC v.1600) ihtiyacım olduğunu belirledim, bu yüzden http://go.microsoft olan cevabındaki bağlantıdan Visual C ++ 2010 Express'i kurdum. .com /? linkid = 9709949 . Her şeyi güncellemelerle kurdum, ancak aşağıda okuyabileceğiniz gibi, bu bir hataydı. Şu anda yalnızca Express'in orijinal sürümü yüklenmelidir (güncellenmiş hiçbir şey yoktur).

vcvarsall.bat mevcuttu, ancak paketi yüklerken yeni bir hata oluştu query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']. Python 2.7 için C modülü oluştururken / kurarken hatalar gibi bu hatayla ilgili başka yığın akışı soruları var

Bu yanıttan 2010 Express'in yalnızca 32 bit derleyiciler yüklediğini belirledim. 64 bit (ve diğer) derleyicileri almak için Windows 7.1 SDK'yı yüklemeniz gerekir. Bkz. Http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx

Bu benim için yüklemez ve yükleyici hatayı döndürdü installation failed with return code 5100. Çözümü şu bağlantıda buldum: http://support.microsoft.com/kb/2717426 . Kısacası, daha yeni x86 ve x64 sürümleri Microsoft Visual C ++ 2010 Yeniden Dağıtılabilir sürümleri yüklüyse, SDK yükleyicisindeki sürümlerle çakışır ve önce kaldırılması gerekir.

SDK daha sonra yükledi, ama vcvars64.bat hala C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\binne de alt klasörleri olmadığını fark ettim . vcvarsall.bat vcvars64 toplu iş dosyasını çalıştırır, bu yüzden onsuz, python paketi hala yüklenmez (Şu anda gösterilen hatayı unuttum).

Daha sonra burada bazı talimatlar buldum: http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 Talimatları izleyerek Express ve 7.1 SDK'yı zaten yükledim, bu yüzden SDK 7.1 SP1'i yükledim ve eksik başlık dosyası düzeltmesi. Sonra el ile içerik vcvars64.bat oluşturdu CALL setenv /x64. Tüm bu talimatları buraya yapıştıracağım, böylece kaybolmazlar.

Adım 1, Visual Studio Express 2010'u indirmektir.

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express başlamak için iyi bir yerdir. Yükleyiciyi indirin ve çalıştırın (vc_web.exe). SQL 2008 ek indirmesine gerek yoktur.

Ayrıca 64 bit derleyiciler için Windows SDK'ya (şu anda 7.1) ihtiyacınız olacak - tam olarak desteklenmeyen yalnızca 32 bitlik yapılar yapmak istemiyorsanız ...

http://www.microsoft.com/tr-tr/download/details.aspx?id=8279 bunu indirmek için iyi bir başlangıç ​​noktasıdır - indirdiğinizde winsdk_web.exe'yi çalıştırmak isteyeceksiniz!

Buradaki varsayılan kurulum gayet iyi.

Son olarak, Windows SDK 7.1 SP1 güncelleştirmesini karşıdan yükleyin ve kurun: http://www.microsoft.com/en-us/download/details.aspx?id=4422

Ve eksik başlık dosyasını düzeltmek için VS2010 SP1. http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

Ve kanlı cehennem, VS2010 Express için eksik toplu iş dosyasını düzeltin. Bu düpedüz saçma oluyor.

C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64 içinde, aşağıdakilerle "vcvars64.bat" oluşturun (yönetici olarak çalıştırmanız gerekir):

CALL setenv / x64

Python paketim hala yüklenmedi (hatayı hatırlayamıyorum). Daha sonra özel SDK 7.1 Komut İstemi'ni kullanmak için bazı talimatlar buldum (aşağıda kopyalandı), bkz: https://mail.python.org/pipermail/distutils-sig/2012-Şubat/018300.html

Bu soruyu boş ver. Burada birisi menüde bu öğeyi fark etti: Başlat-> Tüm Programlar-> Microsoft Windows SDK v7.1 -> Windows SDK 7.1 Komut İstemi

Bu, derleyici için bir çalışma ortamı kurmuş gibi görünen bir toplu işi çalıştırır. Bu istemden "setup.py build" veya "setup.py install" yazabilirsiniz.

Windows SDK 7.1 Komut İstemi'ni belirtildiği gibi açtım ve python paketinde easy_install komutunu çalıştırmak için kullandım. Ve sonunda, başarı!


TLDR ;

  1. Visual Studio Express 2010'u yükleyin (tercihen güncellenmiş yeniden dağıtılabilir dosyalar veya SQL sunucusu olmadan).
  2. Windows 7.1 SDK'yı yükleyin
  3. SDK 7.1 SP1 güncellemesini ve VS2010 SP1 başlık dosyası düzeltmesini yükleyin (bu adım gerekli olmayabilir).
  4. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.batİçerikle manuel olarak oluşturmaCALL setenv /x64
  5. Başlat-> Tüm Programlar-> Microsoft Windows SDK v7.1 -> Windows SDK 7.1 Komut İstemi özel x64 komut istemini açma istemi.

4

Aşağıdaki adımlar benim için bu sorunu giderdi, cython uzantısı ile kurulum oluşturmaya çalışıyordum.

  1. Python 2.7 için Microsoft Visual C ++ Derleyicisi'ni yükleyin
  2. Varsayılan yükleme konumu Python için @ C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ olacaktır. Bu sorunu çözebilir, devam etmeden önce bir kez test edin.
  3. Başarısız olursa, python vcvarsall.bat dosyası için VC ++ 'da nerede olduğunu kontrol edin
  4. Not Defteri'nde distutils paketinin msvc9compiler.py dosyasını açın.
  5. Kutumda bu @ C: \ Anaconda2 \ Lib \ distutils \ msvc9compiler.py find_vcvarsall işlevi bu dosyada, sürüm bağımsız değişkenini yazdırarak VC sürümünü belirleyin. Python 2.7 için 9,0 olması muhtemel
  6. Şimdi C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ ile işaret eden bir ortam değişkeni VS90COMNTOOLS oluşturun Python \ 9.0 \ VC \ bin
  7. Bazı nedenlerden dolayı distutils vcvarsall.bat dosyasının VC dizininde olmasını bekler, ancak Python araçları için VC ++ bu dosyanın 9.0 köküne sahiptir. Bunu düzeltmek için path.join dosyasından (kabaca 247 civarında)

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

Yukarıdaki adımlar benim için sorunu çözdü.


Yukarıdaki adımları izleyerek bağlantı hatası alıyorum LINK: hata LNK2001: çözülemeyen harici sembol init__init__ build \ temp.win-amd64-2.7 \ Release_ init_ .lib: önemli hata LNK1120: 1 çözülemeyen harici hata: komut 'C: \\ Kullanıcılar \\ ma306477 \\ AppData \\ Yerel \\ Programlar \\ Ortak \\ Microsoft \\ Python için Visual C ++ \\ 9.0 \\ VC \\ Bin \\ amd64 \\ link.exe 'çıkış durumu 1120 ile başarısız oldu
manish Prasad

3

Birçok çözüm denedim, ancak Microsoft Visual Studio 2008 Express C ++ yüklemesi için sadece bir tanesi çalıştı .

Bu sorunu C (MS VS ile diğer sorunları olan yEnc,) yazılı bir Python 2.7 modülü ile aldım. Python 2.7'nin MS VS 2008 sürümü ile oluşturulduğunu unutmayın, 2010 değil!

Ücretsiz olmasına rağmen, MS VS 2010'u tanıttığından bulmak oldukça zor. Yine de MSDN resmi çok doğrudan bağlantıları hala çalışıyor: indirme bağlantıları için https://stackoverflow.com/a/15319069/2227298 adresini ziyaret edin .


Evet, en iyi yol VS2008'i yüklemektir.
pylover

3

Eğer mingw yüklüyse

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

çalışır, Microsoft yerine mingw derleyici kullanarak pip oluşturmak için zorlar. Ayrıntılar için buraya bakınız https://github.com/pypa/pip/issues/18 (son gönderi).



3

2016 yılında bunu çözmenin en kolay yolu Chocolatey'i ve ardından vcpython27paketi kurmaktır. Açık Powershell:

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


2

Aynı sorunu yaşadım ve şu anda çözdüm.

"Google" bana "Python 2.7 için Microsoft Visual C ++ Derleyicisi" yüklemem gerektiğini söyledi. Yalnızca aracı değil, aynı zamanda Visual C ++ 2008 Yeniden Dağıtılabilir'i de yükledim, ancak yardımcı olmadı. Daha sonra Visual C ++ 2008 Express Edition'ı yüklemeye çalıştım. Ve sorun gitti!

Visual C ++ 2008 Express Edition'ı yüklemeyi deneyin!


2

çağıran import setuptoolsirade maymun yama distutils Visual Studio ile uyumluluğu zorlamak için. vcvars32.batElle arandığında sanal ortam kurulacak ve derleyicinin atacağı diğer yaygın hatalar önlenecektir. VS 2017 için dosya şu konumdadır:

"C: \ Program Dosyaları (x86) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Auxiliary \ Build \ vcvars32.bat"

İşte .pyx dosyalarını hızlı bir şekilde .pyd'ye derlemek için kullandığım kurulum komut dosyası: (Not: send2trash 3. taraf modülünü kullanır

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

Gerçekten, ithalat setuptools, cython derlemesi durumunda da yardımcı olur .
Basj

biraz daha ayrıntılı açıklar mısınız? manuel olarak vcvars32.bat nasıl çağırılır? Im cython derleme olan
Haziran Wang

2

Visual C ++ 2015 Derleme Araçları'nı karşıdan yüklemek ve kurmak için bu bağlantıyı kullanın . Visual Studio yüklemeden otomatik olarak Visual C ++ 14.0'ı indirip visualcppbuildtools_full.exeyükleyecektir . Kurulum tamamlandıktan sonra pip kurulumunu tekrar deneyin ve hatayı bir daha almayacaksınız.

Aşağıdaki platform ve sürümlerde test ettim:

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

Visual Studio'nun yüklü olmadığı bir Windows kutusuna pyodbc yüklemek istiyorsanız, başka bir seçenek pyodbc'yi ikili dağıtım kullanarak el ile yüklemektir.

Bu, birlikte çalıştığınız makinede yönetici ayrıcalıklarınız yoksa ve bir sanal ağ oluşturmaya çalışıyorsanız özellikle yararlıdır .

Adımlar:

  1. En son Windows yükleyicisini buradan indirin (pyodbc-XXXwin-Y-py2.7.exe)
  2. Yükleyicinin yürütülebilir dosyasını 7-Zip (veya WinRAR veya başka bir yöntemle) açın
  3. Pyodbc.pyd ve pyodbc-XXX-py2.7.egg-info ayıklayın ve içine yerleştirin [python installation directory or virtualenv]\Lib\site-packages
  4. 4. adım yok :)

1

Python 3.4 ile bağımlılık Visual Studio 2010'dadır. Visual C ++ 2010 Express'i yüklemek benim için sorunu düzeltti.

İşe yaramadığım VS 2008 veya 2013 yüklemelerini kullanmak için kandırmak.


1

Benim için çalışan pip yerine easy_install kullanabilirsiniz.


Aynı hataerror: Setup script exited with error: Unable to find vcvarsall.bat
Stephan Schielke

1

@Monkey tarafından verilen cevap doğru cevaplardan biridir, ancak eksiktir.

MinGW kullanmak isterseniz isterseniz, C, C ++ ve ayrıca MinGW kurulum işlemi sırasında önerilen diğer geliştirme araçlarını seçerek "make.exe" dosyasını almalısınız.

Ayrıca, env dosyasında make.exe yolunu ayarlamanız gerekir.

Cevabını tamamlamak için adımlar şunlardır:

  1. Ortam değişkenlerinize mingw32'nin bin dizinini ekleyin
  2. PATH'e C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;ekle
  3. Adresinde distutils.cfgbulunan dosyayı düzenleyin ( yoksa oluşturun) C:\Python26\Lib\distutils\distutils.cfg:

    [build]
    compiler=mingw32

Yeni bir cmd.exe açarak ortam değişkenlerinin ayarlandığından emin olun.


32 bit python modülleri 32 bit mingw ile, 64 bit python modülleri 64 bit mingw ile derlenmelidir. Cygwin 64 bit'te 2 mingw yürütülebilir dosyası vardır: x86_64-w64-mingw32-gccve i686-w64-mingw32-gcc. Bu yürütülebilir dosyalar görünüşte Mingw'den normalde aldığınızlarla aynıdır (sadece bir Cygwin ortamında derlenmiştir).
CMCDragonkai
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.