2014-07-12 2 views
0

Windows에서의 Python 확장은 일반적으로 Python 자체를 컴파일하는 데 사용 된 Visual Studio의 동일한 버전으로 빌드해야한다는 것을 알고 있습니다. Python 2.7부터 3.1까지가 Visual Studio 2008을 사용하여 빌드되었음을 알고 있습니다.하지만 컴퓨터 이미 VS 2013이 설치되어 있습니다. 수많은 시간을 발견 했으므로 Windows 개발 환경을 빠르게 망칠 수있는 방법 중 하나는 Visual Studio를 가장 오래된 것부터 가장 최신의 순서로 설치하는 것입니다. 게다가, 새 Windows 8.1 상자에 VS2008을 설치하면 어리석은 것처럼 보입니다. 파이썬 확장 기능은 에만 해당합니다. 내가 그것을 설치하는 것을 피할 수 있다면, 나는 정말로 원하지 않을 것이다.Visual Studio 2008을 설치하지 않고 Windows *에서 Python 2.7 ~ 3.1의 C 확장을 개발할 수 있습니까?

VS 2008을 설치하지 않고 특정 플랫폼 SDK를 설치하여 공식 Python 배포판을 계속 빌드 할 수 있습니까? 그렇지 않다면, 예를 들어 파이썬의 대안 빌드가있을 것입니다. MinGW 또는 VS 2008을 설치하지 않아도되는 항목?

+0

어쩌면 당신은 VS2008 소스에서 파이썬을 컴파일 할 수 있습니다. – furas

+0

VM을 사용하여 VS2008을 설치하십시오. 테스트 목적으로 이전 버전의 Windows에서 VM을 사용하는 것이 좋습니다. –

답변

4

문제점에 대한 몇 가지 가능한 해결책을 제안 할 수 있습니다. 잠재적으로 가장 쉬운 것부터 가장 어려운 것까지 :

  1. 확장 모듈을 컴파일하기 위해 Visual Studio 2013을 사용하면됩니다. 이 기능을 사용하려면 확장 모듈이 파이썬 인터프리터에 의해 생성 된 C 런타임 객체에 액세스해서는 안되며, 생성 한 C 런타임 객체를 인터프리터에 전달해서는 안됩니다. 특히 파이썬에서 제공하는 FILE * 또는 파일 설명자 객체를 사용할 수 없습니다. 파이썬이 열어 놓은 파일이 아닌 모듈의 파일을 읽고 쓸 수 있습니다.

  2. Visual Studio 2013을 제거하고 Visual Studio 2008을 설치 한 다음 Visual Studio 2013을 다시 설치하십시오. 다음과 같은 해결책보다 훨씬 빠르고 실망 스럽습니다. 이렇게하면 확장 모듈을 거의 정상적으로 빌드 할 수 있으며 사용하는 C 런타임 객체에 대해 걱정할 필요가 없습니다.

  3. mingw32를 사용하고 작동하려면 다양한 해킹을 사용하십시오. 이 페이지는 한 사람이 어떻게 작동하는지 설명합니다 : https://lists.launchpad.net/kicad-developers/msg09473.html

  4. 다른 컴퓨터에 설치된 VS 2008에서 적절한 msvcrt * .lib 파일을 복사하십시오. 링커 옵션을 수동으로 편집하여 동일한 이름의 VS 2013 's msvcrt * .lib 대신이 라이브러리를 사용하십시오. 그래도 작동하지 않는다면, include 파일과 다른 라이브러리도 복사하고 컴파일러와 링커 옵션을 수정하여 대신 사용하십시오. 그래도 작동하지 않으면 VS 2008 명령 줄 컴파일러와 모든 종속 DLL을 복사하고 PATH를 올바르게 설정 한 다음 해당 컴파일러를 대신 사용하도록 빌드 프로세스를 수정하십시오.

+0

당신의 대답은 최고이지만 이것이 최선의 방법이라는 것에 실망감을 표합니다. (나는 옵션 2로가는 것을 끝내었다. 단지 미친 듯이 어리석은 것처럼 보인다 ...) –

+0

불행히도 문제를 해결하기 위해 할 수있는 일은별로 없다. 유닉스 시스템에서 파이썬 모듈은 시스템에 설치된 기본 (그리고 아마도 유일한) C 런타임이 파이썬을 컴파일하는 데 사용되었다고 가정합니다. Windows에서 사람들은 Python을 스스로 컴파일하는 경향이 없으며 Microsoft는 Python이나 심지어 컴파일러에 OS를 제공하지 않습니다. –

+0

포인트 1 주셔서 감사합니다, 이것에 대한 정보는 찾기가 매우 어렵습니다. 더 자세한 정보를 얻으려면 추가 자료가 있습니까? – Overdrivr