Program Tip

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

programtip 2020. 9. 28. 09:58
반응형

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


Python 패키지 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

업데이트 : 여기의 지침이 위험 할 수 있다는 의견이 있습니다. 아래의 원래 답변을 사용 하지 말고 Visual C ++ 2008 Express 에디션 또는 Python 용 특수 제작 된 Microsoft Visual C ++ 컴파일러 ( 세부 정보 )를 사용하는 것이 좋습니다. 원래 오류 메시지는 필요한 버전의 Visual C ++가 설치되지 않았 음을 의미합니다.


Windows 설치의 경우 :

패키지 설치를 위해 setup.py를 실행하는 동안 Python 2.7은 설치된 Visual Studio 2008을 검색합니다 . VS90COMNTOOLS를 호출하기 전에 환경 변수에 올바른 경로를 설정하여 Python이 최신 Visual Studio를 사용하도록 속일 수 있습니다 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 빌드 를 참조하세요.


해결책을 찾았습니다. 나는 똑같은 문제와 오류가 발생하여 '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.


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


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

  1. 실행 python.exe하여 컴파일 된 VC ++ 버전을 표시합니다 (아래에 표시된 예).

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

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

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

  2. 아래 표 [1] 을 사용하여 내부 VC ++ 버전을 해당 Visual Studio 릴리스와 일치시킵니다.

    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 Build Tools를 다운로드 하세요 .

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

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

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

@srodriguex 에 따르면 이 답변 을 따라 Python이 검색하는 위치에 배치 파일 몇 개를 복사하는 대신 배치 파일을 수동으로로드하는 것을 건너 뛸 수 있습니다 (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 ++가 협력 할 수 있도록 행성이 올바르게 정렬되기를 바랍니다.


무슨 일이야? Python 모듈은 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/ 에서 다운로드 할 수 있습니다 .


"Error : Unable to find 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 패키징에 대한 더 긴 폭언을 읽을 수 있습니다.


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 대화 형 프롬프트를 시작하거나 print 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을 안정적으로 유지하고 싶다고 말했습니다.


나는 방금 똑같은 문제가 있었기 때문에 동일한 문제를 가진 다른 사람을 돕고 방금 보낸 몇 시간을 절약하기를 희망하며 여기에 내 이야기를 들려 줄 것입니다.

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

setup.py install을 실행할 때 모두이 오류로 시작되었습니다.

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의 모든 인스턴스를 제거하십시오." ( 여기에서 )

이제 드디어 작업을 시작할 수 있습니다.


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

python setup.py install -c mingw32

나는 파이썬 2.73과 윈도우 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))

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에 설치하려면 빌드하기 전에 활성화하십시오.


누군가가 관심을 가질 수 있습니다. 다음은 py2exe 패키지에 대해 저에게 효과적이었습니다. (Windows 7 및 .NET Framework 4 용 Windows SDK가 포함 된 Windows 7 64 비트 및 휴대용 Python 2.7, Visual Studio 2005 Express가 있습니다.)

set VS90COMNTOOLS=%VS80COMNTOOLS%

그때:

python.exe setup.py install

Python 3.4 64 비트 버전에서이 문제를 해결하는 방법을 찾는 데 거의 이틀을 보냈습니다. Python 3.4.3 (v3.4.3 : 9b73f1c3e601, 2015 년 2 월 24 일, 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
    

    나는 https://stackoverflow.com/a/23099820/4383472따라 변경 mfinfo했습니다 None.C:\Python34\Lib\distutils\msvc9compiler.py

  6. 마지막으로 pip install numpy명령 내 avast 바이러스 백신이 설치 프로세스를 방해하려고 시도했지만 빠르게 비활성화했습니다.

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

해결 방법 2, 쉬움 : (이 접근 방식은 이미 투표율이 높은 답변 에서 언급 되었지만 정말 더 쉽기 때문에 반복하겠습니다.)이 모든 작업을 수행 한 후 가장 좋은 방법은 이미 사용하는 것임을 이해했습니다. 앞으로 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 에서 미리 컴파일 된 바이너리 . 이 사이트에 포함되지 않은 패키지 (또는 패키지 버전)가 필요할 가능성은 매우 적습니다. 이 방법으로 설치 프로세스도 훨씬 빠릅니다. 예를 들어 다음을 설치합니다 numpy.

  1. numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl해당 사이트의 donwload (Python 3.4 64 비트가있는 경우)
  2. 명령 프롬프트 또는 powershell에서 pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl(또는 명령 프롬프트가 열리는 방식에 따라 파일의 전체 경로)로 설치합니다.

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가 있는지 확인하십시오).


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

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

여기에 이미지 설명 입력


위의 모든 답변을 시도했지만 모두 작동하지 않는 것으로 나타났습니다. 아마도 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

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


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 용


Windows 7 x64 에서 Python 3.4.1을 사용하여이 문제가 발생 했으며, 안타깝게도 필요한 패키지에 사용할 수있는 적절한 exe 또는 휠이 없었습니다. 이 시스템에는 아래에 자세히 설명 된 몇 가지 '해결 방법'이 필요합니다 (및 하단의 TLDR ).

위의 Jaxrtech의 답변 정보를 사용하여 Visual Studio C ++ 2010 (sys.version은 MSC v.1600을 반환)이 필요하다고 결정했기 때문에 http://go.microsoft의 답변 링크에서 Visual C ++ 2010 Express를 설치했습니다. .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 배치 파일을 실행하므로이 파일이 없으면 python 패키지가 여전히 설치되지 않습니다 (이때 표시된 오류를 잊었습니다).

그런 다음 여기에서 몇 가지 지침을 찾았습니다. 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을 설치하고 누락 된 헤더 파일 수정. 그런 다음 콘텐츠로 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/en-us/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의 명령 포함)와 함께 사용할 수 있습니다.

아래 단계는 나를 위해이 문제를 해결했으며 cython 확장으로 설정을 만들려고했습니다.

  1. Python 2.7 용 Microsoft Visual C ++ 컴파일러 설치
  2. 기본 설치 위치는 @ C : \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python입니다. 실제로 문제를 해결할 수 있으며 진행하기 전에 한 번 테스트합니다.
  3. 실패하면 VC ++ for python vcvarsall.bat 파일의 위치를 ​​확인하십시오.
  4. 메모장에서 distutils 패키지의 msvc9compiler.py 파일을 엽니 다.
  5. 내 상자에는이 파일의 @ C : \ Anaconda2 \ Lib \ distutils \ msvc9compiler.py find_vcvarsall 함수였습니다. 버전 인수를 인쇄하여 VC 버전을 확인하십시오. Python 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 dir 내에있을 것으로 예상하지만 python 도구 용 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)

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


많은 솔루션을 시도했지만 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 에서 확인 하십시오 .


mingw가 설치되어있는 경우

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

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


http://www.microsoft.com/en-us/download/details.aspx?id=44266의 Python 2.7 용 Microsoft Visual C ++ 컴파일러 가 솔루션이 아닙니까?


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

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

너무 늦었는지는 모르겠지만 Microsoft Visual C ++ Compiler for Python 2.7찾았 습니다.

이 컴파일러 패키지가 필요한 경우 받게되는 일반적인 오류 메시지는 Unable to find vcvarsall.bat입니다.

도움이 되었기를 바랍니다!


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

"Google"은 "파이썬 2.7 용 마이크로 소프트 비주얼 C ++ 컴파일러"를 설치해야한다고 말했습니다. 도구뿐만 아니라 Visual C ++ 2008 Reditributable도 설치했지만 도움이되지 않았습니다. 그런 다음 Visual C ++ 2008 Express Edition을 설치하려고했습니다. 그리고 문제가 사라졌습니다!

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


호출 import setuptools하면 원숭이 패치 distutils가 Visual Studio와의 호환성을 강요합니다. 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()

Visual Studio가 설치 되지 않은 Windows 상자에 pyodbc를 설치하려는 경우 다른 옵션은 이진 배포를 사용하여 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 단계는 없습니다. :)

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

내가 작동하지 않은 VS 2008 또는 2013 설치를 사용하도록 속임수.


pip 대신 easy_install을 사용할 수 있습니다.


@monkey가 제공 한 대답은 올바른 대답 중 하나이지만 불완전합니다.

MinGW 를 사용 하려면 MinGW 설치 과정에서 제안 된 C, C ++ 및 기타 개발 도구를 선택하여 "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를 열어 환경 변수가 설정되었는지 확인하십시오.


나는 같은 오류 (오류 메시지가 전달되는 것처럼 어리 석고 실제로 도움이되지 않는 오류)가 있었고 C 컴파일러를 사용할 수 있음에도 불구하고 계속 문제가 발생했습니다.

놀랍게도 나를 위해 일하게 된 것은 단순히 pip 및 setuptools를 최신 버전으로 업그레이드하는 것 입니다. 이것이 다른 사람에게 도움이되기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat

반응형