itsource

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

mycopycode 2022. 12. 4. 22:36
반응형

오류: 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 설치의 경우:

「」의 셋업.Python 2.7 Visual Studio 2008 입니다. Studio에서 를 설정하여 새로운 Visual Studio를 수 .VS90COMNTOOLSsetup.py.

설치된 Visual Studio 버전에 따라 다음 명령을 실행합니다.

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

경고: 아래에 기술한 바와 같이 python 모듈을 컴파일하려고 하면 이 답변이 작동하지 않을 수 있습니다.

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

해결책을 찾았어요'amara' 설치 시 동일한 문제와 오류가 발생하였습니다.mingw32가 설치되어 있습니다만, 디스트리뷰트를 설정할 필요가 있었습니다.

  1. 이미 설치된 Python 2.6을 가지고 있습니다.
  2. 를 mingw32에 했습니다.C:\programs\mingw\
  3. mingw32 bin은 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/에서 설치할 수 있습니다.

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

  1. 실행합니다.python.exeVC++로 하다

    파이썬이 컴파일된 Visual C++ 컴파일러의 해당 버전을 사용하는 것이 중요합니다. 왜냐하면 distilutils는get_build_version혼합 버전을 방지합니다(Piotr 경고에 따름).

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

    명령줄에서 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비트 컴파일러의 경우에만 Visual Studio C++ 2008 Express Edition을 다운로드하십시오.

    64비트[2][3] 컴파일러의 경우 Windows SDK for Windows 7 및 다운로드합니다.NET Framework 3.5 SP1.

    • 제외한 모든 항목의 합니다.Developer Tools >> Visual C++ CompilersSDK 툴의 인스톨에 드는 시간과 디스크 스페이스를 절약할 수 있습니다.

    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용 빌드 도구를 다운로드하십시오.

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

@srodrigex에 따르면, 이 답변에 따라 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.bat ★★★★★★★★★★★★★★★★★」vcvarsx86_amd64.bat 더 한 것은 '의 입니다.amd64 ★★★★★★★★★★★★★★★★★」x86_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.pyC/C++는 C/C++를 사용합니다.Pip은 Microsoft Visual C++를 사용합니다.이 파일이 없으면 다음과 같은 오류 메시지가 나타납니다. "Error:vcvarsall.bat을 수 .

소정의 솔루션은 C/C++ 컴파일러, Microsoft Visual C++ 또는 MinGW(오픈소스 프로젝트)를 설치하는 것입니다.다만, 어느쪽인가를 인스톨 해 설정하는 것은 매우 어렵습니다.(2014년 편집:Microsoft 는 Python 2.7 용으로 특별한 C++ 컴파일러를 발행했습니다.)

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


'오류:"Cannot 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의 지침을 따르십시오.

Python 패키징에 대한 자세한 내용은 https://stackoverflow.com/a/13445719/284795를 참조하십시오.

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

마이크로소프트는 이제 Python 확장자를 컴파일할 수 있는 번들 컴파일러와 헤더를 기억할 만한 URL에서 제공합니다.

Microsoft Visual C++ 컴파일러 Python 2.7 버전

http://aka.ms/vcpython27

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

하거나 Python을 인쇄하는 sys.version을.MSC 스트링: " " " 의 " " " 입니다.MSC v.1500이 도구를 사용할 수 있습니다.

최초 공지사항에서 번역 목록까지:

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

이 패키지에는 Python 2.7 32비트 및 64비트용 C 확장 모듈을 구축하는 데 필요한 모든 도구와 헤더가 포함되어 있습니다(일부 확장 모듈에는 OpenSSL 또는 libxml2와 같은 서드파티 종속성이 필요합니다).Visual C++ 2008을 탑재한 Python의 다른 버전도 지원되므로 "Python 2.7"은 광고일 뿐이며, 2.6과 3.2에서는 정상적으로 동작합니다.

6.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 mingw32msysmsys가

python setup.py install -c mingw32

python 2.73과 windows 7을 가지고 있습니다.나에게 효과가 있었던 솔루션은 다음과 같습니다.

  1. mingw32의 bin 디렉토리를 환경변수에 추가: PATH 추가C:\programs\mingw\bin;
  2. 다음 위치에 있는 distutils.cfg 생성C:\Python27\Lib\distutils\distutils.cfg ★★★★★

    [build]
    compiler=mingw32
    

MinGW가 -mno-cygwin 플래그를 인식하지 않도록 하려면 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의 Microsoft Visual C++ 컴파일러 Python 2.7 버전

  2. 「 」를 하는 .distutils.core.setup()

  3. 하다python setup.py buildpip.

pip을 하면 패키지의 setuptools가 를 사용하도록 은 setuptools의 setuptools의 setuptools의 setuptools의 setuptools의 setuptools의 setuptools를 사용하는 경우에도 마찬가지입니다.setup.py하는 에는 pip을 사용합니다.python setup.py build 「」를 사용합니다.distutils.core.setup()을 사용하다


솔루션

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

시작 메뉴 또는 시작 화면을 열고 "Visual C++ 2008 32-bit Command Prompt"(파이썬이 32비트인 경우) 또는 "Visual C++ 2008 64-bit Command Prompt"(파이썬이 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가상 환경에 인스톨 하는 경우는, 가상 환경을 구축하기 전에 액티브하게 해 주세요.

py2exe 패키지에 대해 다음과 같은 작업을 했습니다.(Windows 7 64비트와 휴대용 python 2.7, Windows 7용 Visual Studio 2005 Express 및 Windows 7용 SDK를 가지고 있습니다.NET 프레임워크 4)

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. Microsoft Windows SDK v7.1 for Windows 7 설치
  3. file " " " create create"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 Service Pack 1 컴파일러 업데이트와 함께 Microsoft Visual Studio 2010 Service Pack 1을 설치합니다.
  5. 후 나는 그그 to to to to to to to to to to to topip install numpy 에러, 에러, 에러, 에러 에러가 했습니다.

    File "numpy\core\setup.py", line 686, in get_mathlib_info
    raise RuntimeError("Broken toolchain: cannot link a simple C program")
    RuntimeError: Broken toolchain: cannot link a simple C program
    

    mfinfo로로 합니다.NoneC:\Python34\Lib\distutils\msvc9compiler.pyhttps://stackoverflow.com/a/23099820/4383472에 따라

  6. pip install numpy my 가 설치했습니다.

numpy를 컴파일하는 데 시간이 많이 걸렸고 오류가 있는 줄 알았지만 결국 모든 것이 정상으로 돌아갔습니다.

솔루션 2, 간단: (이 접근방식은 이미 투표율이 높은 답변에 기재되어 있는 것은 알고 있습니다만, 이 모든 작업을 완료하고 나서, 향후에는 http://www.lfd.uci.edu/에서 이미 컴파일 되어 있는 바이너리를 사용하는 것이 최선이라는 것을 알게 되었습니다.이 사이트에는 포함되어 있지 않은 패키지(또는 패키지 버전)가 필요할 가능성은 거의 없습니다.이렇게 하면 설치 과정도 훨씬 빨라집니다.예를 들어 을(를) 설치하려면numpy:

  1. numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl 3) (Python 3.4 64비트)
  2. 에서 pip powershell을 하여 설치합니다.pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl) ('명령어프롬프트가 열립니다)

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

저의 솔루션은 다음과 같습니다.

Microsoft Visual C++ for Python 2.7 설치(@Michael이 제안함)

Windows 10 에서는, 다음의 장소에 인스톨 되고 있습니다(사용자명은 Andreas 입니다).

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

환경 변수 VS90COMNTOOLS를 Python 2.7용 Visual C++ 설치 경로로 설정합니다(위 경로 참조).

그래도 작동하지 않으면 모듈에서 수정합니다.

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이 있습니다).

python 3.5에 numpy 라이브러리를 설치하려고 했을 때 이 문제가 발생했습니다.해결책은 VS2015를 설치하는 것입니다.VS2008, 2012, 2013을 사용했는데 모두 python 3.5와 호환되지 않습니다.분명히 새로운 버전의 python은 새로운 버전의 vs에 의존합니다.

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

여기에 이미지 설명 입력

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

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

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

위의 답변을 모두 시험해 봤는데, 모두 동작하지 않는 것을 알 수 있었습니다.아마 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

파일을 붙여넣습니다.그럼 모든 게 잘 될 거야

Visual C++ 2008 Express Edition은 http://go.microsoft.com/?linkid=7729279에서 다운로드할 수 있습니다.Visual C++ 2008 Express Edition은 설치 시 VS90COMNTOOLS 환경변수를 설정하므로 호환되는 컴파일러로 구축됩니다.

@PiotrDobrogost가 코멘트에서 언급했듯이 Visual C++ 2008이 왜 적절한지에 대한 그의 답변은 상세하게 설명되지만, Python의 Windows 빌드가 Visual Studio의 새로운 버전으로 이행함에 따라 달라질 수 있습니다.Windows에서 Python 2.7용 lxml 빌드

Windows 7 x 64에서 Python 3.4.1을 사용할 때 이 문제가 발생했는데, 안타깝게도 필요한 패키지는 사용할 수 있는 exe나 wheel이 없었습니다.이 시스템에는 다음과 같은 몇 가지 '회피책'이 필요합니다(아래에는 TLDR).

위의 Jaxrtech의 답변에 있는 정보를 사용하여 Visual Studio C++ 2010(sys.version return MSC v.dlink)이 필요하다고 판단하여 답변 링크(http://go.microsoft.com/?linkid=9709949)에서 Visual C++ 2010 Express를 설치했습니다.업데이트와 함께 모든 것을 설치했는데, 아래 보시는 바와 같이 이것은 실수였습니다.이 시점에서는 Express의 원래 버전만 설치해야 합니다(업데이트된 내용은 없습니다).

vcvarsall.bat 시가 발생했습니다.query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']Python 2.7용 C 모듈 구축/설치오류 발생 등 이 오류에 대한 다른 stackoverflow 질문이 있습니다.

이 답변에서 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즉, 최신 버전의 Microsoft Visual C++ 2010 재배포 가능 Microsoft Visual C++ 2010 Redistributable 이 설치되어 있는 경우 SDK 설치 프로그램과 충돌하므로 먼저 제거해야 합니다.

후 SDK가 SDK에 하지 않는 을 알 수 있었습니다.C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\binvcvarsall.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비트만의 빌드를 실행하는 경우를 제외하고...

다운로드 시 winsdk_web.exe를 실행하는 것이 좋습니다.다운로드 시 http://www.microsoft.com/en-us/download/details.aspx?id=8279가 좋습니다.

여기서의 디폴트 인스톨은 문제 없습니다.

마지막으로 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

python 패키지가 아직 설치되지 않았습니다(오류를 불러올 수 없습니다).다음으로 특수 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 Server를 설치하지 않는 것이 좋습니다).
  2. Windows 7.1 SDK 설치
  3. 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. Microsoft Visual C++ 컴파일러 Python 2.7 설치
  2. 기본 설치 장소는 @ C:\Users\ 입니다.PC-user\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python 실제로 문제가 수정될 수 있습니다.이것에 의해, 1 회 테스트한 후에 속행해 주세요.
  3. 실패할 경우 VC++ for python vcvarsall.bat 파일의 위치를 확인합니다.
  4. 메모장에서 distutils 패키지의 msvc9compiler.py 파일을 엽니다.
  5. 이 파일에는 @ C:\Anaconda2\Lib\distutils\msvc9compiler.py find_vcvarsall 함수가 포함되어 있습니다.version 인수를 출력하여 VC 버전을 확인합니다.Python 2.7의 경우 9.0이 될 수 있습니다.
  6. 다음으로 환경변수 VS90COMNTOOLS를 생성하여 C를 가리킵니다.\Users\PC-user\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\bin
  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)

위의 절차로 문제가 해결되었습니다.

, " "import setuptools는 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()

여러 가지 솔루션을 시도했지만, 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

Microsoft 컴파일러가 아닌 mingw 컴파일러를 사용하여 pip을 강제로 빌드합니다.상세한 것에 대하여는, https://github.com/pypa/pip/issues/18 를 참조해 주세요(마지막 투고).

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

후 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++ 컴파일러 Python 2.7 버전을 찾았습니다.

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

이게 도움이 됐으면 좋겠네요!

공식적으로 지원되는 MS V'++ 버전 및 설치 종류 목록(및 일부 버전)setuptools 사용 방법에 대해서는, 다음의 URL 를 참조해 주세요.

https://wiki.python.org/moin/WindowsCompilers

또한 Win32 Python 공식 릴리스에 필요한 VC++ 버전도 지정합니다.MinGW는 공식적으로 지원되지 않습니다(자세한 내용은 아래 참조).

요약:

  • 각 릴리스마다 개봉 즉시 사용할 수 있는 특정 Visual Studio 릴리스가 있습니다.
  • 독립 실행형 SDK의 경우 일반적으로 SDK 프롬프트에서 설치를 실행해야 합니다(=환경 변수 설정).
    • 일부의 경우, 이 요건은 부작용이 없는 일회성 조정으로 해결될 수 있습니다.
  • 중 는 VC++에서 됩니다.setuptools anddistutils.
  • MinGW는 "작동 가능"하지만 x86에만 해당됩니다.https://bugs.python.org/issue4709은 자사의 지원 문제가 MinGW 자체에 있으며 심지어 x86도 Python 3.5 이후부터 문제가 발생할 이라고 말합니다.

같은 문제가 생겨서 지금은 해결했어요.

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

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

Visual Studio가 설치되지 않은 Windows 상자에 pyodbc를 설치하려면 바이너리 배포를 사용하여 pyodbc를 수동으로 설치하는 방법도 있습니다.

이 기능은 작업 중인 시스템에 대한 관리자 권한이 없고 Virtualenv를 설정하려고 할 때 특히 유용합니다.

순서:

  1. 여기에서 최신 Windows 설치 프로그램을 다운로드합니다(pyodbc-X.X.X.win-Y-py2.7.exe).
  2. 7-Zip(또는 WinRAR 등)을 사용하여 설치 실행 파일을 엽니다.
  3. pyodbc.하여 pyd합니다.pyodbc-X.X.X-py2.7.eg-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을 사용할 수 있습니다.

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

반응형