Python Windows 패키지를 virtualenvs에 설치할 수 있습니까?


125

Virtualenv는 훌륭합니다. 다른 프로젝트의 종속성이 모두 공통된 더미에 함께 포함되지 않도록 여러 개의 개별 Python 설치를 유지할 수 있습니다.

그러나 .exe 설치 프로그램으로 패키지 된 Windows에 패키지를 설치하려면 virtualenv에 설치하도록 지시하려면 어떻게해야합니까? 예를 들어 pycuda-0.94rc.win32-py2.6.exe가 있습니다. 내가 그것을 실행할 때, 그것은 레지스트리를 검사하고 설치할 virtual26의 하나 인 Python26을 찾습니다.

virtualenv에 설치하도록 지시하려면 어떻게해야합니까?


1
아래 답변이 저에게 효과적입니다. stackoverflow.com/questions/6114115/…
user1960422

답변:


201

그래 넌 할수있어. 당신이 필요한 전부

easy_install binary_installer_built_with_distutils.exe

놀랐나요? distutils로 만든 Windows 용 이진 설치 관리자는 .exe와 .zip을 하나의 .exe 파일로 결합합니다. 확장자가 .zip으로 변경되어 유효한 zip 파일인지 확인하십시오. 내 질문에 대한 답변을 읽은 후 이것을 발견 했습니다. Windows 용 psycopg2로 이진 계란을 어디서 다운로드 할 수 있습니까?

최신 정보

요즘 Tritium21이 그의 답변에서 언급했듯이 easy_install 대신 pip를 사용해야합니다. Pip은 distutils로 만든 이진 패키지를 설치할 수 없지만 새로운 형식으로 이진 패키지를 설치할 수 있습니다 . 패키지를 사용하여 이전 형식에서 새 형식으로 변환 할 수 있습니다 . 먼저 패키지를 설치해야합니다.


2
동의합니다. 그런데 7zip이 있으면 이름을 zip으로 바꾸지 않고도 .exe를 직접 열 수 있습니다.
Sabuncu

5
팁 : 개발자는 lfd.uci.edu/~gohlke/pythonlibs 에서 Windows 용 다양한 내장 Python 패키지를 다운로드 할 수 있습니다 .
yangzh

@CodyHatch 당신은 이것이 SO에 대한 나의 유일한 대답이 아니기 때문에 당신도 할 수 있습니다. 다른 답변들도 도움이 될 것입니다 :)
Piotr Dobrogost

1
나는 다음을 얻을 : 바이너리 설치 - 내장과-distutils.exe 읽기 검색 pypi.python.org/simple/... 읽기 pypi.python.org/simple/... 'binary_installer_built_with_distutils.exe'에 대한 인덱스 페이지를 찾을 수 없습니다 모든 패키지의 검색 색인 (시간이 걸릴 수 있음) 읽기 pypi.python.org/simple binary-installer-built-with-dist-utils.exe 오류에 대한 로컬 패키지 또는 다운로드 링크가 없습니다 : Requirement.parse에 적합한 배포를 찾을 수 없습니다. ( '이진 설치 ler-built-with-d ...
Paul

1
Paul, 그가 말하는 exe는 말 그대로 "binary-installer-built-with-distutils.exe"가 아닌 사용중인 설치 프로그램에 따라 다릅니다.
Tristan Reid

70

나는 이것이 매우 오래된 질문이라는 것을 알고 있으며 내가 이야기하려고하는 도구보다 먼저 사용하지만 Google을 위해 언급하는 것이 좋습니다. easy_install은 파이썬 패키징의 검은 양입니다. 아무도 새로운 핍의 핍으로 그것을 사용하고 싶어하지 않습니다. 또한 레지스트리 트릭을 재생하는 것은 비표준 EXE 설치 프로그램에 가장 효과적이지만 (누군가 distutils를 사용하는 대신 설치 프로그램을 직접 빌드하고 설치 경로를 레지스트리를 확인하는 중) 표준 EXE 설치 프로그램에 대한 더 나은 방법 (c)이 있습니다. .

pip install wheel
wheel convert INSTALLER.EXE
pip install NEW_FILE_CREATED_IN_LAST_STEP.whl

이 포스트에서 최근에 소개 된 휠 형식은 달걀 형식을 대체하여 거의 같은 역할을합니다. 이 형식은 pip (virtualv에 이미 설치된 도구)에서도 지원됩니다.

어떤 이유로 든 pip install WHEELFILE작동하지 않으면 시도하십시오wheel install WHEELFILE


고마워 바라건대 더 많은 사람들이 당신의 대답을 알아 차리고 찬성합니다!
Brett Stottlemyer

확실하게. 이를 사용하여 .exe에서 .whl을 만들 수 있습니다 (예 : lfd.uci.edu/~gohlke/pythonlibs ). 이것은 거대한 메신저 배포 조건입니다!
Jonas Gröger

나는 이것을 시도했지만 오류 휠을 numpy-MKL-1.8.1.win-amd64-py2.7.exe로 변환 한 다음 pip install numpy-1.8.1-cp27-none-win_amd64.whl 다음 오류가 발생합니다. numpy-1.8.1-cp27-none-win-amd64.whl 다운로드 / 포장 풀기 numpy-1.8.1-cp27-non e-win-amd64.whl 요구 사항을 충족하는 다운로드를 찾을 수 없습니다 -1.8.1-cp27-none-win-amd64.whl
Paul

wheel install WHEELFILE그 존재를 지적하기 위해 편집 된 답변을 보십시오 . 누군가의 특정 문제를 디버깅하는 것은 SO 의견에서 사소한 것이 아닙니다.
Tritium21

이 목적으로 만 easy_install을 여러 번 필요로 한 후에, 그것은 아름답습니다. * easy_install에 대한 작별 인사
KobeJohn

40

레지스트리에 Python 설치를 등록하기 위해 스크립트 ( http://effbot.org/zone/python-register.htm )를 수정했습니다 . 내가 할 파이썬을 선택할 수 있습니다 , 레지스트리에서 파이썬 윈도우 설치 프로그램을 실행 한 후 레지스트리 다시 설정 :

# -*- encoding: utf-8 -*-
#
# script to register Python 2.0 or later for use with win32all
# and other extensions that require Python registry settings
#
# Adapted by Ned Batchelder from a script
# written by Joakim Löw for Secret Labs AB / PythonWare
#
# source:
# http://www.pythonware.com/products/works/articles/regpy20.htm

import sys

from _winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)

def RegisterPy():
    try:
        reg = OpenKey(HKEY_LOCAL_MACHINE, regpath)
    except EnvironmentError:
        try:
            reg = CreateKey(HKEY_LOCAL_MACHINE, regpath)
        except Exception, e:
            print "*** Unable to register: %s" % e
            return

    SetValue(reg, installkey, REG_SZ, installpath)
    SetValue(reg, pythonkey, REG_SZ, pythonpath)
    CloseKey(reg)
    print "--- Python %s at %s is now registered!" % (version, installpath)

if __name__ == "__main__":
    RegisterPy()

등록하고자하는 Python으로이 스크립트를 실행하면 레지스트리에 입력됩니다. Windows 7 및 Vista에서는 관리자 권한이 필요합니다.


1
Windows 7, 64 비트에서 64 비트로 Python은 regpath를 다음과 같이 수정해야했습니다.regpath = "SOFTWARE\\Wow6432Node\\Python\\Pythoncore\\%s\\" % (version)
Oleksiy

실제로 내 Windows 7, 64 비트의 경우 regpath를 그대로두고 작동했습니다. @Oleksiy 모드는 작동하지 않는다고 제안했습니다. 아마도 OS 버전이나 설정에 따라 약간의 차이가있을 수 있습니다.
Paul

@ Ned Batchelder의 솔루션은 나를 위해 일한 유일한 솔루션이었습니다. 휠 설치가 작동하지 않았습니다. 여전히 패키지 다운로드 오류가 발생했습니다 (자세한 내용은 해당 답변에 대한 의견 참조). easy_install binary_installer ...를 수행하라는 제안이 효과가 있었지만 binary_installer ... exe 파일을 찾기 위해 easy_install을 얻을 수 없었습니다.
Paul

7

easy_install은 널리 사용되는 많은 패키지를 다루는 distutils의 bdist_wininst 대상을 사용하여 빌드 된 한 .exe 패키지를 설치할 수 있습니다. 그러나 그렇지 않은 많은 것들이 있습니다 (wxPython은 내가 고투 한 것입니다)


예, 모든 종속성의 개발 패키지를 설치 한 한. 필자의 경우 pycuda는 사소한 일이 아닌 Boost와 CUDA가 필요합니다.
Ned Batchelder

1
@Ned Batchelder 예. 모든 종속성의 개발 패키지를 설치 한 한. 바이너리 설치 프로그램은 모든 의존성을 설치하지는 않습니다.
Piotr Dobrogost

0

환경의 easy_install을 사용하여 PyCUDA를 설치할 수 있습니다.

dev-env-path/bin/easy_install pycuda

동일한 버전 0.94rc를 제공합니다.

Windows에서 easy_install.exe는 Scripts 디렉토리에 있습니다.


1
불행히도 이것은 소스에서 빌드하려고 시도합니다. 미리 빌드 된 바이너리를 사용하고 싶었습니다.
Ned Batchelder

0

.msi경우을 사용하여 명령 행 옵션을 지정할 수 있습니다 msiexec. 파이썬 설치 프로그램 자체는을 허용 TARGETDIR하지만 distutils가 이것을 배포 설치 프로그램에 넣는 지 확실하지 않습니다.

를 사용하는 경우 .exe깨끗한 방법이 없다고 생각합니다. 한 가지 옵션은 7Zip (또는 winzip 등)과 같은 프로그램을 사용하여 exe의 내용을 직접 추출한 다음 관련 폴더를 가상 사이트 패키지 폴더에 복사하는 것입니다. 예를 들어 "processing-0.5.2.win32-py2.5.exe"를 추출하면 virtualenv 경로에 복사하고 런타임 문제없이 사용하는 "PLATLIB \ processing"폴더를 찾습니다. (그렇지만 항상 그렇게 단순하지는 않습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.