오류 : vcvarsall.bat를 찾을 수 없습니다


851

파이썬 패키지 dulwich 를 설치하려고했습니다 .

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
이것이 어리 석고
Panic

48
Microsoft는 이제 솔루션을 제공합니다. microsoft.com/en-us/download/details.aspx?id=44266
Martijn Pieters

6
@MartijnPieters wheel 및 setuptools 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
Steve Dower (Microsoft의 Python 팀 직원)는이 주제에 대한 블로그 게시물을 작성했습니다. blogs.msdn.microsoft.com/pythonengineering/2016/04/11/…
Cody Piersall

답변:


683

업데이트 : 의견에 따르면 여기의 지침은 위험 할 수 있습니다. Visual C ++ 2008 Express Edition 또는 Python 용으로 특수 제작 된 Microsoft Visual C ++ 컴파일러 ( details )를 사용하고 아래의 원래 답변을 사용 하지 마십시오 . 원래 오류 메시지는 필요한 버전의 Visual C ++가 설치되지 않았 음을 의미합니다.


Windows 설치의 경우 :

패키지 설치를 위해 setup.py를 실행하는 동안 Python 2.7은 설치된 Visual Studio 2008을 검색합니다 .을 VS90COMNTOOLS호출하기 전에 환경 변수에 올바른 경로를 설정하여 최신 Visual Studio를 사용하도록 Python을 속일 수 있습니다 setup.py.

설치된 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%

경고 : 아래에서 언급했듯이 파이썬 모듈을 컴파일하려고하면이 답변이 작동하지 않을 수 있습니다.

자세한 내용 은 Windows 에서 Python 2.7 용 lxml 빌드 를 참조하십시오.


21
그것은 나를 위해 않았다 :(
fmuecke

8
@ 길리 :이 문제는 변수의 공백으로 인한 것 같습니다. 따옴표로 묶으십시오. 나를 위해 % VS100COMNTOOLS % = "C : \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ Tools"
legends2k

7
파이썬은 VS2008에 의존하기 때문에 많은 것들에 효과가 없습니다. 이 답변을 살펴보십시오 : stackoverflow.com/questions/6551724/…
shezi

182
경고!!! 이것은 잘못된 답변입니다. 당신은 파이썬 C 확장 컴파일 어떤 경우에도 한 두 (버전) 컴파일러는 아마 호환되지 않는 C 런타임 라이브러리를해야합니다으로 파이썬을 컴파일하는 데 사용 다른 (버전) 컴파일러를 사용하여. 자세한 내용은 답변을 참조하십시오.
Piotr Dobrogost

72
go.microsoft.com/?linkid=7729279 에서 무료 Visual C ++ 2008 Express Edition을 다운로드 할 수 있습니다.이 버전은 설치 중에 VS90COMNTOOLS 환경 변수를 설정하고 호환되는 컴파일러로 빌드합니다.
Eric Smith

225

해결책을 찾았습니다. 'amara'를 설치하는 것과 똑같은 문제와 오류가 발생했습니다. mingw32를 설치했지만 distutils를 구성해야했습니다.

  1. 이미 설치된 Python 2.6이 있습니다.
  2. 나는 mingw32를 설치했다. C:\programs\mingw\
  3. 환경 변수에 mingw32의 bin 디렉토리를 추가 c:\programs\MinGW\bin;하십시오. PATH에 추가 하십시오.
  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을 찾습니다.
Jonathan Hartley

2
마침내 파이썬 (x, y) 2.7에 scikits.image를 설치 하여 사용자 PATH 에 추가 C:\msysgit\mingw\mingw32\bin하고 C:\msysgit\mingw\binSpyder를 다시 시작하기 전에 Spyder를 다시 시작하여 다시 시작 pip install했습니다.
endolith

20
필요가 없습니다 이제까지 때문에 환경 변수 변화의 재부팅이. 새로운 cmd.exe 프로세스를 여는 것으로 충분합니다.
Tomalak

11
나는 아직도 이것을 고칠 수 없었다. 오류gcc: error: unrecognized command line option '-mno-cygwin' error: Setup script exited with error: command 'gcc' failed with exit status 1easy_install.exe amara
사용자

5
@user,이 파일을 열어야합니다 : C:\Python27\Lib\distutils\cygwincompiler.py그리고 모든 사건을 제거 –mno-cygwin하십시오; 이것은 최신 버전의 GCC가 –mno-cygwin옵션 을 제거했기 때문에 존재하지 않기 때문입니다.
Zeinab Abbasimazar

220

http://www.lfd.uci.edu/~gohlke/pythonlibs/ 에서 컴파일 된 버전을 설치할 수 있습니다 .


15
단지 팁 : 실행하여 VIRTUALENV이 사이트에서 패키지를 설치할 수 있습니다 easy_install binary_installer_built_with_distutils.exe에 accoding의, VIRTUALENV에서 이 답변 .
yangzh

14
모든 Python Windows 개발자는 이에 대해 알아야합니다
고등학생

1
당신은 또한 수 wheel convert ....exe원할 때마다 다음이 설치 및 핍로 설치합니다.
Zooba

3
더 정확하게하려면 lfd.uci.edu/~gohlke/pythonlibs/#mysql-python 한 번 개방 다운로드 관리자로 실행 터미널python -m pip install <filename>
아룬

홀리 신의 어머니, 바로 그 자리에 있습니다. 매력처럼 작동, TY :)
Amir

162

mingw 대신 Visual Studio C ++로 컴파일하려면 ...

  1. python.exe컴파일 된 VC ++ 버전을 표시하려면 실행하십시오 (아래 예 참조).

    이다 중요한 파이썬이 이후로 컴파일하는 비주얼 C ++ 컴파일러의 해당 버전을 사용하는 distilutilsget_build_version방지가 (버전을 혼합 표트르의 경고 당을 ).

    • 노란색 (위)은 Python 2.7이며 MSC v.1500 (Visual Studio C ++ 2008)으로 컴파일되었습니다.
    • 빨간색 (아래)은 Python 3.4.1이며 MSC v.1600 (Visual Studio C ++ 2010)으로 컴파일되었습니다.

    MSC v.1500으로 컴파일 된 Python 2.7 및 MSC v.1600으로 컴파일 된 Python 3.4.1을 보여주는 명령 줄의 예

  2. 내부 VC ++ 버전과 해당 Visual Studio 릴리스를 일치 시키려면 아래 표 [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 ++에 대한 추가 참고 사항이 아래에 나열되어 있습니다.

    Visual Studio C ++ 2008 참고 사항

    의 경우 에만 32 비트 컴파일러, 다운로드 비주얼 스튜디오 C ++ 2008 익스프레스 에디션 .

    64 비트 컴파일러 [2] [3]의 경우 Windows 7 및 .NET Framework 3.5 SP1 용 Windows SDK를 다운로드 하십시오 .

    • Developer Tools >> Visual C++ Compilers필요하지 않은 SDK 도구를 설치하여 시간과 디스크 공간을 절약하기 위해 모든 것을 선택 취소 하십시오.

    Visual Studio C ++ 2010에 대한 참고 사항

    Microsoft에 따르면 Visual Studio 2010 SP1을 설치 한 경우 VC ++ 용 컴파일러와 라이브러리가 제거되었을 수 있습니다.
    이 경우 Visual C ++ 2010 SP1 컴파일러 업데이트를 다운로드하십시오 .

    Visual Studio C ++ 2015에 대한 참고 사항

    Visual Studio IDE가 필요하지 않은 경우 Visual Studio C ++ 2015 빌드 도구를 다운로드 하십시오 .

    Visual Studio C ++ 2017에 대한 참고 사항

    Visual Studio IDE가 필요하지 않은 경우 Visual Studio 2017 용 빌드 도구를 다운로드 하십시오 .

    제안 : 32 비트 및 64 비트 Python 설치가 모두있는 경우 virtualenv 를 사용하여 별도의 Python 환경을 만들 수 있으므로 경로를 망설이지 않고 한 번에 하나씩 사용하여 Python 버전을 선택할 수 있습니다 사용하다.

@ srodriguex 에 따르면 , 이 대답 에 따라 파이썬이 검색하는 위치에 몇 개의 배치 파일을 복사하여 배치 파일을 수동으로로드하는 것을 건너 뛸 수 있습니다 (4-6 단계) . 그래도 문제가 해결되지 않으면 다음과 같은 단계가 처음에 효과가있었습니다.

  1. 열어 cmd.exe

  2. C 확장이 필요한 것을 설치 하기 전에 다음 배치 파일을 실행하여 VC ++ 컴파일러 환경을 세션에로드하십시오 (예 : 환경 변수, 컴파일러 경로 등).

    실행 :

    • 32 비트 컴파일러 :

      참고 : 32 비트 Windows 설치는 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.batvcvarsx86_amd64.bat나 사이에 더 중요한 차이 amd64x86_amd64, 전 네이티브 64 비트 컴파일러 툴이며, 후자는 32 비트 Windows 설치에서 실행할 수있는 크로스 컴파일러를 64 비트입니다 .

    업데이트 :
    어떤 이유로 일련의 문자가 error: ... was unexpected at this time.있는 곳 을 얻는 ...다면 경로 변수에 여분의 따옴표 또는 길 잃은 문자와 같은 외래 문자가 없는지 확인해야합니다. 배치 파일이 세션 경로를 먼저 이해할 수 없으면 세션 경로를 업데이트 할 수 없습니다.

  3. 문제가 해결되지 않으면 VC ++ 버전과 실행 한 명령에 따라 다음 메시지 중 하나가 표시됩니다.

    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. VC ++가 협력하기 위해 행성이 올바르게 정렬되도록 손가락을 희망하고 교차하십시오.


당신은 충분히 추천 할 수 없습니다 않는 바로 64 비트 이동의 고통을 통해 이동합니다. 4GB 이상의 주소 공간이 필요하기 전에 시간 문제 일뿐입니다. 32 비트가 훨씬 쉬워서 고통스런 경험에서 말한 다음 종속성을 포함하여 64 비트를 포함한 모든 것을 제거해야합니다. 거의 주말 내내.
Thomas Browne

1
그런 다음, 훨씬 더 많은 작업을 수행하기 위해 얼마나 많은 사람들이 파이썬을 사용해야하는지 잊습니다. 그리고 @ThomasBrowne, 나는 그것이 고통스럽고 불필요한 경험의 악이라고 확신합니다. 나는 그것을 조사하고 있으며 희망적으로 뭔가를 찾을 수 있습니다. 주요 문제는 Visual Studio C ++ 2008 Express에 64 비트 컴파일러가 제공되지 않았지만 여기 어딘가에 있다는 것이 확실합니다.
Josh Bowden

필요한 경우 64 비트 컴파일러를 얻는 방법에 대한 자세한 정보로 업데이트했습니다.
Josh Bowden

필자의 경우 위의 1 단계를 따르고이 답변에 이어 나머지를 건너 뛰었습니다 . 이제 .bat 실행의 성가심을 피하면서 패키지를 설치할 수 있습니다.
srodriguex

파이썬은 64 비트 컴파일러 툴이 찾고있는 것을 사용하여 PATH에로드되는 것을 가정처럼 @srodriguex 물론이 경우, 그것은 외모 ...\VC\bin\vcvarsamd64.bat...\VC\bin\amd64\vcvarsamd64.bat.
Josh Bowden

73

무슨 일이야? 파이썬 모듈은 C 또는 C ++로 작성 될 수 있습니다 (일반적으로 속도를 위해). Pip (또는 setup.py)으로 이러한 패키지를 설치하려고하면 소스에서 해당 C / C ++를 컴파일해야합니다. 기본적으로 Pip은 Microsoft Visual C ++ 컴파일러가 설치되어 있다고 생각합니다. 없는 경우이 오류 메시지 "오류 : vcvarsall.bat를 찾을 수 없습니다"가 표시됩니다.

규정 된 솔루션은 Microsoft Visual C ++ 또는 MinGW (오픈 소스 프로젝트) 인 C / C ++ 컴파일러를 설치하는 것 입니다. 그러나 설치 및 구성이 매우 어렵습니다. (편집 2014 : Microsoft는 Python 2.7 용 특수 C ++ 컴파일러 를 발표했습니다 )

가장 쉬운 해결책은 인기있는 Python 패키지에 Christoph Gohlke의 Windows 설치 프로그램 (.msi)을 사용하는 것입니다. 그는 Python 2.x 및 3.x, 32 비트 및 64 비트 용 설치 프로그램을 빌드합니다. http://www.lfd.uci.edu/~gohlke/pythonlibs/ 에서 다운로드 할 수 있습니다 .


"오류 : vcvarsall.bat를 찾을 수 없음"이 엄청나게 암호적이고 도움이되지 않는 메시지라고 생각하는 경우 http://bugs.python.org/issue2943 에서 버그에 댓글을 달아 보다 유용하고 사용자가 많은 사용자로 교체하십시오. 친절한 메시지.

Ruby는 패키지 관리자 Gem과 함께 제공되며 준공식 C / C ++ 컴파일러 인 DevKit을 제공합니다. 패키지없이 패키지를 설치하려고하면 다음과 같은 유용한 유용한 메시지가 표시됩니다.

빌드 도구를 포함하도록 PATH를 업데이트하거나 http://rubyinstaller.org/downloads 에서 DevKit을 다운로드하고 http://github.com/oneclick/rubyinstaller/wiki/Development-Kit 의 지침을 따르십시오

https://stackoverflow.com/a/13445719/284795 에서 Python 패키징에 대한 자세한 내용을 읽을 수 있습니다.


pip를 사용하여 가상 환경에이 사전 컴파일 된 실행 파일을 설치하려면 어떻게해야합니까?
Shailen

@shailenTJ 좋은 질문입니다. 한 번도 해 본 적이 없지만 stackoverflow.com/a/5442340/284795
Panic Panic

이것이 내가 아는 가장 좋고 쉬운 솔루션이었습니다. 감사.
user1477388

편집 2014 는 나에게 가장 좋은 대답입니다. 놓치기 쉬운 지침 : setuptools로 버전 6.0이상으로 업데이트하십시오 pip install setuptools --upgrade.
orlade

64

Python을 빌드하는 데 사용되는 컴파일러와 호환되는 Microsoft 컴파일러를 설치해야합니다. 즉, Visual C ++ 2008 (또는 일부 조정 이 필요함)이 필요합니다 .

마이크로 소프트는 번들 컴파일러를 공급하고 헤더는 단지 기억에 남는 URL에서, 파이썬 확장을 컴파일 할 수 :

Python 2.7 용 Microsoft Visual C ++ 컴파일러

http://aka.ms/vcpython27

이것은 비교적 작은 패키지입니다. 85MB 다운로드, 관리자 권한없이 설치 가능, 재부팅 불필요 이름은 약간 오해의 소지가 있습니다. 컴파일러는 Python 2.7이 아니라 Visual C ++ 2008로 원래 컴파일 된 모든 Python 버전에서 작동합니다.

Python 대화식 프롬프트를 시작하거나 인쇄 sys.version하는 경우 MSC버전 문자열을 찾으십시오 . 그렇다면 MSC v.1500이 도구를 사용할 수 있습니다.

로부터 의 distutils 목록에 원래 발표 :

Microsoft는 사람들이 Windows에서 C 확장 모듈을보다 쉽게 ​​빌드하고 배포 할 수 있도록 Python 2.7 용 컴파일러 패키지를 출시했습니다. Python 2.7 용 Microsoft Visual C ++ 컴파일러 (일명 VC9)는 http://aka.ms/vcpython27 에서 구할 수 있습니다.

이 패키지에는 Python 2.7 32 비트 및 64 비트 용 C 확장 모듈을 빌드하는 데 필요한 모든 도구와 헤더가 포함되어 있습니다 (일부 확장 모듈에는 포함되지 않은 OpenSSL 또는 libxml2와 같은 타사 종속성이 필요함). Visual C ++ 2008로 작성된 다른 버전의 Python도 지원되므로 "Python 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 : setuptoolsdistutilsPython 릴리스주기에 포함 된 것보다 훨씬 더 자주 릴리스 할 수 있습니다. 그리고 distitutils실제로는 새로운 시스템에 대한 작업이이를 대체하기 위해 일종의 유지 관리 모드로 전환했습니다. 그 작업은 대신 중단되었습니다.
Martijn Pieters

사이 썬의 용도에의 distutils, 당신은 수입 setuptools에해야하는 원숭이 패치의 distutils : github.com/cython/cython/wiki/CythonExtensionsOnWindows
denfromufa

54

방금이 같은 문제가 있었으므로 같은 문제를 가진 다른 사람에게 도움이되고 방금 보낸 두 시간을 절약하기를 바랍니다.

Windows 7 상자에 mingw (g ++ (GCC) 4.6.1)와 python 2.7.3이 있으며 PyCrypto를 설치하려고합니다.

setup.py 설치를 실행할 때이 오류로 시작되었습니다.

error: Unable to find vcvarsall.bat

mingw를 선택한 컴파일러로 지정하여 오류를 인터넷 검색 한 후 쉽게 해결됩니다.

setup.py install build --compiler=mingw32

문제는 다른 오류가 있다는 것입니다.

configure: error: cannot run C compiled programs.

내 바이러스 백신이 새로 컴파일 된 .exe의 실행을 차단하고있는 것으로 나타났습니다. 방금 바이러스 백신 "주민 보호막"을 비활성화하고 다음 오류로 넘어갔습니다.

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

이 문제를 해결했습니다. "조금 더 오래된 MinGW 버전을 설치하거나 Python 디렉토리에서 distutils \ cygwinccompiler.py를 편집하여 -mno-cygwin의 모든 인스턴스를 제거하십시오." ( 여기에서 )

이제 마침내 일을 시작할 수 있습니다.


7
MinGW 호환 버전의 Python 라이브러리도 필요합니다. 자세한 내용은 eli.thegreenplace.net/2008/06/28/… 를 참조하십시오
Gili

강선전도 : D
Xilpex

23

VC 컴파일러를 찾는 것처럼 보이므로 -c mingw32msys가 있으므로으로 컴파일러 유형을 언급 할 수 있습니다.

python setup.py install -c mingw32

16
clairify하기 위해 작동하는 명령은 다음 python setup.py build --compiler=mingw32과 같습니다.python setup.py install
Emil Stenström

python setup.py build --compiler = mingw32를 실행 한 후 ImportError : Cython이 Anaconda 아래에 설치되어있는 동안 Cython.Distutils라는 모듈이 없습니다. 어떤 제안?
세렌디피티

20

python 2.73 및 windows 7. 나를 위해 일한 솔루션은 다음과 같습니다.

  1. 환경 변수에 추가 mingw32의 bin 디렉토리 : APPEND PATHC:\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.

최신 버전의 pip를 사용하는 경우 setup.pydistutils를 호출 하더라도 패키지가 setuptools를 사용하도록 강제 (monkeypatch)합니다 . 그러나 pip를 사용하지 않고 그냥 수행하는 python setup.py build경우 빌드 프로세스는을 사용 distutils.core.setup()하며 컴파일러 설치 위치는 알 수 없습니다.


해결책

1 단계 : 적절한 Visual C ++ 2008 명령 프롬프트 열기

시작 메뉴 또는 시작 화면을 열고 "Visual C ++ 2008 32 비트 명령 프롬프트"(python이 32 비트 인 경우) 또는 "Visual C ++ 2008 64 비트 명령 프롬프트"(python이 64 비트 인 경우)를 검색하십시오. . 그것을 실행하십시오. 명령 프롬프트에 제목 표시 줄에 Visual 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에 설치하려면 빌드하기 전에 활성화하십시오.


당신은 대신 <코드> 파이썬 setup.py 빌드 </ 코드>의 <코드> PIP </ code>를 사용하여 패키지를 구축 할 수 있습니다
aronadaal

9

어쩌면 누군가 관심이있을 수 있습니다. 다음은 py2exe 패키지에서 나를 위해 일했습니다. (Windows 7 64 비트 및 휴대용 Python 2.7, Windows 7 및 .NET Framework 4 용 Windows SDK가 포함 된 Visual Studio 2005 Express가 있습니다)

set VS90COMNTOOLS=%VS80COMNTOOLS%

그때:

python.exe setup.py install

아니요, 당신 말이 맞아요, 무슨 일이 있었는지 잘 모르겠습니다. 원래 의견을 삭제하겠습니다.
Dave Challis

1
매우 유용한!! 제 경우에는 'set VS90COMNTOOLS = % VS110COMNTOOLS %'를 만들었습니다.
jrvidotti

@Exzile : 예, 같은 명령 프롬프트 세션에서 이러한 명령을 입력합니다
Stefano Fenu

이것을하지 마십시오 !!! 자세한 내용은 이 답변 을 참조하십시오.
익명

8

파이썬 3.4 64 비트 버전에서이 문제를 해결하는 방법을 알아내는 데 거의 2 일이 걸렸습니다. Python 3.4.3 (v3.4.3 : 9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 비트 (AMD64 )] win32에

솔루션 1, 어려움 : (이 내용을 읽기 전에 아래의 첫 번째 솔루션 2를 읽으십시오) 마지막으로 이것이 도움이되었습니다.

  1. Visual C ++ 2010 Express 설치
  2. Windows 7 용 Microsoft Windows SDK v7.1 설치
  3. 수동으로 파일을 생성 vcvars64.batC:\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. (선택 사항) Windows SDK 7.1 용 Microsoft Visual C ++ 2010 서비스 팩 1 컴파일러 업데이트 와 함께 Microsoft Visual Studio 2010 서비스 팩 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

    내가 변경 mfinfoNone에서 C:\Python34\Lib\distutils\msvc9compiler.py이 당 https://stackoverflow.com/a/23099820/4383472

  6. 마지막으로 pip install numpy명령 후 내 avast antivirus가 설치 프로세스를 방해하려고했지만 신속하게 비활성화했습니다.

numpy가 컴파일되는 데 몇 분이 걸렸습니다. 오류가 있다고 생각했지만 결국 모든 것이 정상이었습니다.

해결책 2, 쉬운 : (이 방법은 이미 투표권이 높은 답변 에서 언급 되었지만 실제로 더 쉬우므로 반복하도록하겠습니다.)이 모든 작업을 마친 후에 가장 좋은 방법은 이미 사용하는 것임을 이해했습니다 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 에서 사전 컴파일 된 바이너리 . 이 사이트에 포함되지 않은 일부 패키지 (또는 패키지 버전)가 필요할 가능성은 매우 적습니다. 이 방법으로 설치 프로세스도 훨씬 빠릅니다. 예를 들어, 설치합니다 numpy:

  1. 적재하다 numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl해당 사이트에서 (Python 3.4 64 비트가있는 경우)
  2. 명령 프롬프트 또는 Powershell에서 pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl(또는 명령 프롬프트가 열리는 방법에 따라 파일의 전체 경로)로 설치하십시오

numpy‑1.9.2 + mkl‑cp34‑none‑win_amd64.whl – 위의 링크에서이 파일을 찾을 수 없습니다.
Amresh Giri

7

Python 2.7에서 Windows 10에서 pysph를 실행하고 vcvarsall.bat를 찾을 수 없습니다 (distutils에서)

내 해결책은 다음과 같습니다.

Python 2.7 용 Microsoft Visual C ++ 설치 (@Michael 제안)

Windows 10에서는 (내 사용자 이름은 Andreas입니다)에 설치되었습니다.

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

환경 변수 VS90COMNTOOLS 를 Visual C ++ for Python 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비어 있습니다.
브라이스 Guinta

Python 2.7 용 Microsoft Visual C ++를 설치 한 후에도?
chiefenne

7

파이썬 3.5에 numpy 라이브러리를 설치하려고 할 때이 문제가 발생했습니다. 해결책은 VS2015를 설치하는 것입니다. 나는 VS2008, 2012, 2013을 가지고 있었고, 어느 것도 파이썬 3.5와 호환되지 않습니다. 분명히 최신 버전의 파이썬은 최신 버전의 VS에 의존합니다.

또한 C ++ 공통 도구가 Visual Studio와 함께 설치되어 있는지 확인하십시오.

여기에 이미지 설명을 입력하십시오


6

위의 모든 답변을 시도했지만 모두 작동하지 않는 것으로 나타났습니다. 이것은 아마도 Windows 8을 사용 중이고 Visual Studio 2012를 설치 한 것일 수 있습니다.이 경우에 여러분이하는 일입니다.

vcvarsall.bat파일은 여기에 있습니다 : C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

파일을 선택하고 복사하기 만하면됩니다.

그런 다음이 디렉토리로 이동하십시오. C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

파일을 붙여 넣습니다. 그리고 모든 것이 잘되어야합니다.


모두 잘되지는 않지만 귀하의 답변을 따랐지만 여전히 동일한 오류가 발생합니다.
Stupid_Intern

6

http://go.microsoft.com/?linkid=7729279 에서 무료 Visual C ++ 2008 Express Edition을 다운로드하여 설치할 때 VS90COMNTOOLS 환경 변수를 설정하고 호환되는 컴파일러로 빌드 할 수 있습니다.

@PiotrDobrogost가 의견에서 언급 했듯이이 다른 질문에 대한 그의 대답은 Visual C ++ 2008이 왜 빌드해야하는지에 대한 세부 사항을 설명하지만 Python의 Windows 빌드가 최신 버전의 Visual Studio로 이동함에 따라 변경 될 수 있습니다. lxml 작성 Windows의 Python 2.7 용


또한 다른 버전이 설치되어 있지 않은지 확인하십시오. 나는 이것으로 어려움을 겪었다. 컴퓨터를 다시 포맷하고이 버전 만 설치했습니다. 여러 버전의 VS를 제거하면 오래 걸렸을 것입니다.
jmunsch 2016 년

6

Windows 7 x64 에서 Python 3.4.1을 사용 하여이 문제가 발생했지만 불행히도 필요한 패키지에 사용할 수있는 적절한 exe 또는 바퀴가 없었습니다. 이 시스템에는 몇 가지 '해결 방법'이 필요하며 아래에 자세히 설명되어 있습니다 (아래에 TLDR ).

위의 Jaxrtech의 답변 정보를 사용하여 Visual Studio C ++ 2010 (sys.version return MSC v.1600)이 필요하다는 결론을 얻었으므로 Visual C ++ 2010 Express를 그의 답변 링크에서 http://go.microsoft로 설치했습니다. .COM /? linkID를 = 9709949 . 업데이트로 모든 것을 설치했지만 아래에서 읽을 수 있듯이 이것은 실수였습니다. 현재는 원래 버전의 Express 만 설치해야합니다 (아무것도 업데이트하지 않음).

vcvarsall.bat이 (가) 존재하지만 패키지를 설치할 때 새로운 오류가 발생했습니다 query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']. 이 오류와 같은 다른 스택 오버 플로우 질문이 있습니다.Python 2.7 용 C 모듈을 빌드 / 설치하는 동안

그 대답에서 2010 Express는 32 비트 컴파일러 만 설치한다고 결정했습니다. 64 비트 (및 기타) 컴파일러를 사용하려면 Windows 7.1 SDK를 설치해야합니다. 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 의 지시에 따라, 이미 Express 및 7.1 SDK, 그래서 설치 SDK 7.1 SP1을 설치하고 한 것은했던 헤더 파일 수정이 없습니다. 그런 다음 content를 사용하여 vcvars64.bat를 수동으로 작성했습니다 CALL setenv /x64. 모든 지시 사항을 여기에 붙여서 잃어 버리지 않도록하십시오.

1 단계는 Visual Studio Express 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/ko-kr/download/details.aspx?id=8279 는 이것을 다운로드하기에 좋은 출발점입니다. 다운로드시 winsdk_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 Express의 누락 된 배치 파일을 수정하십시오. 이것은 터무니없는 말입니다.

C : \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64에서 다음을 사용하여 "vcvars64.bat"를 만듭니다 (관리자로 실행해야 함).

전화 setenv / x64

내 파이썬 패키지가 여전히 설치되지 않았습니다 (오류를 불러올 수 없습니다). 그런 다음 특수 SDK 7.1 명령 프롬프트를 사용하는 몇 가지 지침 (아래 복사)을 찾았습니다. https://mail.python.org/pipermail/distutils-sig/2012-February/018300.html

이 질문은 신경 쓰지 마십시오. 여기 누군가가 메뉴에서이 항목을 발견했습니다. 시작-> 모든 프로그램-> Microsoft Windows SDK v7.1-> Windows SDK 7.1 명령 프롬프트

컴파일러의 작업 환경을 설정하는 것처럼 보이는 배치 작업이 실행됩니다. 이 프롬프트에서 "setup.py build"또는 "setup.py install"을 입력 할 수 있습니다.

지시에 따라 Windows SDK 7.1 명령 프롬프트를 열고 python 패키지에서 easy_install을 실행하는 데 사용했습니다. 그리고 마침내 성공!


TLDR ;

  1. Visual Studio Express 2010을 설치하십시오 (업데이트 된 재배포 가능 파일 또는 SQL 서버가없는 것이 바람직 함).
  2. Windows 7.1 SDK 설치
  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. 시작-> 모든 프로그램-> Microsoft Windows SDK v7.1-> Windows SDK 7.1 명령 프롬프트 특수 x64 명령 프롬프트를 열고 python / easy_install / pip / etc (virtual_envs의 명령 포함)와 함께 사용할 수 있습니다.

4

아래 단계 에서이 문제가 해결되어 cython 확장으로 설정을 만들려고했습니다.

  1. Python 2.7 용 Microsoft Visual C ++ 컴파일러 설치
  2. 기본 설치 위치는 @ C : \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python입니다. 실제로 문제를 해결하고 진행하기 전에 한 번 테스트 할 수 있습니다.
  3. 실패하면 VC ++에서 Python vcvarsall.bat 파일의 위치를 ​​확인하십시오.
  4. 메모장에서 distutils 패키지의 msvc9compiler.py 파일을여십시오.
  5. 내 상자에 이것은이 파일의 @ C : \ Anaconda2 \ Lib \ distutils \ msvc9compiler.py find_vcvarsall 함수였습니다. 버전 인수를 인쇄하여 VC의 버전을 결정하십시오. 파이썬 2.7의 경우 9.0 일 가능성이 큽니다.
  6. 이제 C : \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ 9.0 \ VC \ bin을 가리키는 환경 변수 VS90COMNTOOLS를 만듭니다.
  7. 어떤 이유로 distutils는 vcvarsall.bat 파일이 VC 디렉토리 내에있을 것으로 예상하지만, 파이썬 도구 용 VC ++는 9.0의 루트에 있습니다. 이것을 수정하려면 path.join에서 "VC"를 제거하십시오 (대략 247 행).

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

위의 단계로 인해 문제가 해결되었습니다.


위의 단계를 수행하면 연결 오류가 발생합니다 .LINK : error LNK2001 : 해결되지 않은 외부 기호 init__init__ build \ temp.win-amd64-2.7 \ Release_ init_ .lib : 치명적인 오류 LNK1120 : 1 해결되지 않은 외부 오류 : command 'C : \\ Users \\ ma306477 \\ AppData \\ Local \\ Programs \\ Common \\ Microsoft \\ Python 용 Visual C ++ \\ 9.0 \\ VC \\ Bin \\ amd64 \\ link.exe '종료 상태 1120으로 실패했습니다.
Manish Prasad

3

많은 솔루션을 시험해 보았지만 Microsoft Visual Studio 2008 Express C ++를 설치 한 솔루션은 하나뿐이었습니다 .

C로 작성된 Python 2.7 모듈 (yEnc, MS VS와 다른 문제가 있음) 에서이 문제가 발생했습니다. Python 2.7은 2010이 아닌 MS VS 2008 버전으로 빌드되었습니다!

MS가 VS 2010을 홍보하고 있기 때문에 무료라는 사실에도 불구하고 찾기가 매우 어렵습니다. 여전히 MSDN 공식 매우 직접 링크가 여전히 작동합니다. https://stackoverflow.com/a/15319069/2227298 에서 다운로드 링크를 확인 하십시오 .


예, 가장 좋은 방법은 VS2008을 설치하는 것입니다.
pylover

3

mingw를 설치 한 경우

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

pip가 Microsoft 대신 mingw 컴파일러를 사용하여 빌드하도록 강제합니다. 자세한 내용은 https://github.com/pypa/pip/issues/18 을 참조하십시오 (마지막 게시물).



3

2016 년에이를 해결하는 가장 쉬운 방법은 Chocolatey를 설치 한 다음 vcpython27패키지 를 설치하는 것 입니다. Powershell 열기 :

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


2

나는 같은 문제를 겪었고 현재 해결했다.

"Google"은 "Python 2.7 용 Microsoft Visual C ++ 컴파일러"를 설치해야한다고 말했습니다. 도구뿐만 아니라 Visual C ++ 2008 Reditributable도 설치했지만 도움이되지 않았습니다. 그런 다음 Visual C ++ 2008 Express Edition을 설치하려고했습니다. 그리고 문제는 사라졌습니다!

Visual C ++ 2008 Express Edition을 설치하십시오!


2

호출 import setuptools하면 Visual Studio와의 호환성을 위해 원숭이 패치 distutils가 사용됩니다. vcvars32.bat수동으로 호출 하면 가상 환경이 설정되고 컴파일러에서 발생하는 다른 일반적인 오류가 방지됩니다. VS 2017의 경우 파일은 다음 위치에 있습니다.

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

다음은 .pyx 파일을 .pyd로 빠르게 컴파일하는 데 사용하는 설정 스크립트입니다. (참고 : 타사 모듈 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()

실제로, 가져 오기 setuptoolscython 컴파일 의 경우에도 도움이됩니다 .
Basj

좀 더 자세히 설명해 주시겠습니까? vcvars32.bat를 수동으로 호출하는 방법? Cython 편집을하고있는 Im
June Wang

2

이 링크를 사용하여 Visual C ++ 2015 빌드 도구 를 다운로드하고 설치 하십시오 . 실제로 Visual Studio를 설치하지 않고 Visual C ++ 14.0 을 자동으로 다운로드 visualcppbuildtools_full.exe하여 설치 합니다. 설치가 완료된 후 pip install을 다시 시도하면 오류가 다시 발생하지 않습니다.

다음 플랫폼 및 버전에서 테스트했습니다.

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

Windows 상자에 pyodbc를 설치 하지 않으려는 경우Visual Studio가 설치되어 경우 다른 옵션은 이진 배포를 사용하여 pyodbc를 수동으로 설치하는 것입니다.

작업중인 컴퓨터에 대한 관리자 권한이없고 virtualenv 를 설정하려는 경우에 특히 유용합니다. .

단계 :

  1. 여기 에서 최신 Windows 설치 프로그램을 다운로드 하십시오. (pyodbc-XXXwin-Y-py2.7.exe)
  2. 7-Zip (또는 WinRAR 등)을 사용하여 설치 프로그램 실행 파일을 엽니 다.
  3. pyodbc.pyd 및 pyodbc-XXX-py2.7.egg-info를 추출하여 [python installation directory or virtualenv]\Lib\site-packages
  4. 4 단계는 없습니다 :)

1

Python 3.4에서는 Visual Studio 2010에 대한 종속성이 있습니다. Visual C ++ 2010 Express를 설치하면 문제가 해결되었습니다.

VS 2008 또는 2013 설치를 사용하도록 설정하면 작동하지 않습니다.



1

@monkey의 답변은 올바른 답변 중 하나이지만 불완전합니다.

MinGW 를 사용 하려면 C, C ++ 및 MinGW 설치 과정에서 제안 된 기타 개발 도구를 선택하여 "make.exe"를 가져와야합니다.

또한 env에 경로가 make.exe로 설정되어 있어야합니다.

그의 답변을 완료하기 위해 다음 단계를 수행하십시오.

  1. 환경 변수에 mingw32의 bin 디렉토리 추가
  2. C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin;PATH에 추가
  3. 다음 distutils.cfg위치에 있는 파일을 편집 (없는 경우 작성)하십시오 C:\Python26\Lib\distutils\distutils.cfg.

    [build]
    compiler=mingw32

새 cmd.exe를 열어 환경 변수가 설정되어 있는지 확인하십시오.


32 비트 파이썬 모듈은 32 비트 mingw로 컴파일해야하지만 64 비트 파이썬 모듈은 64 비트 mingw로 컴파일해야합니다. Cygwin 64 비트에는 2 개의 mingw 실행 파일이 있습니다 : x86_64-w64-mingw32-gcci686-w64-mingw32-gcc. 이러한 실행 파일은 Mingw에서 얻을 수있는 것과 동일합니다 (Cygwin 환경 내에서 컴파일 된 것임).
CMCDragonkai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.