Virtualenv jest świetny: pozwala mi zachować wiele różnych instalacji Pythona, dzięki czemu zależności różnych projektów nie są wrzucane razem do wspólnego stosu.
Ale jeśli chcę zainstalować pakiet w systemie Windows, który jest spakowany jako instalator .exe, jak mogę skierować go do instalacji w virtualenv? Na przykład mam pycuda-0.94rc.win32-py2.6.exe. Po uruchomieniu sprawdza rejestr i znajduje tylko jeden Python26 do zainstalowania, wspólny, na którym opiera się mój virtualenv.
Jak mogę skierować go do instalacji w virtualenv?
python
windows
virtualenv
Ned Batchelder
źródło
źródło
Odpowiedzi:
Tak, możesz. Wszystko czego potrzebujesz to
Zaskoczony? Wygląda na to, że instalatory binarne dla systemu Windows utworzone za pomocą distutils łączą pliki .exe z .zip w jeden plik .exe. Zmień rozszerzenie na .zip, aby zobaczyć, że jest to prawidłowy plik ZIP. Odkryłem to po przeczytaniu odpowiedzi na moje pytanie Skąd mogę pobrać binarne jaja za pomocą psycopg2 dla Windows?
AKTUALIZACJA
Jak zauważył Tritium21 w swojej odpowiedzi, obecnie powinieneś używać pip zamiast easy_install. Pip nie może zainstalować pakietów binarnych utworzonych przez distutils, ale może zainstalować pakiety binarne w nowym formacie koła . Możesz przekonwertować stary format na nowy za pomocą pakietu kół , który musisz najpierw zainstalować.
źródło
Wiem, że jest to dość stare pytanie, które poprzedza narzędzia, o których będę mówić, ale dla dobra Google myślę, że warto o tym wspomnieć. easy_install to czarna owca w pakiecie Pythona. Nikt nie chce się przyznać, że używa go z nowym gorącym pipem. Ponadto, podczas wykonywania sztuczek rejestru najlepiej działa w przypadku niestandardowych instalatorów EXE (ktoś sam zbudował instalator zamiast używać distutils i sprawdza rejestr w poszukiwaniu ścieżki instalacji), istnieje teraz Better Way (c) dla standardowych instalatorów EXE .
Format koła, wprowadzony niedawno w tym poście, jest zamiennikiem formatu jaja, pełniąc prawie taką samą rolę. Ten format jest również obsługiwany przez pip (narzędzie już zainstalowane w twoim virtualenv).
jeśli z jakiegoś powodu
pip install WHEELFILE
nie działa, spróbujwheel install WHEELFILE
źródło
wheel install WHEELFILE
, zredagowano odpowiedź, aby wskazać na istnienie tego. Debugowanie konkretnego problemu dla kogoś nie jest czymś trywialnym w komentarzach SO.Skończyło się na dostosowaniu skryptu ( http://effbot.org/zone/python-register.htm ), aby zarejestrować instalację Pythona w rejestrze. Mogę odebrać Python być Python w rejestrze, uruchom instalator Windows, a następnie ustawić tyłem rejestru:
Uruchom ten skrypt w języku Python, który chcesz zarejestrować, a zostanie on wpisany do rejestru. Pamiętaj, że w systemie Windows 7 i Vista będziesz potrzebować uprawnień administratora.
źródło
regpath = "SOFTWARE\\Wow6432Node\\Python\\Pythoncore\\%s\\" % (version)
easy_install może instalować pakiety .exe, o ile zostały one zbudowane przy użyciu celu bdist_wininst firmy distutils, który obejmuje wiele popularnych pakietów. Jednak jest wiele innych, które nie są (wxPython to taki, z którym się zmagałem)
źródło
Aby zainstalować PyCUDA, możesz skorzystać ze środowiska easy_install.
da ci tę samą wersję 0.94rc.
W systemie Windows plik easy_install.exe będzie znajdować się w katalogu Scripts.
źródło
Jeśli tak
.msi
, możesz określić opcje wiersza poleceń za pomocąmsiexec
. Sam instalator Pythona na to pozwalaTARGETDIR
, ale nie jestem pewien, czy distutils umieści to w instalatorach dystrybucji.Jeśli używasz
.exe
, nie sądzę, aby istniał czysty sposób. Jedną z opcji jest użycie programu takiego jak 7Zip (lub winzip itp.), Aby bezpośrednio wyodrębnić zawartość exe, a następnie skopiować odpowiednie foldery do folderu pakietów witryn wirtualnych. Na przykład, jeśli wyodrębnię plik „processing-0.5.2.win32-py2.5.exe”, znajdę folder „PLATLIB \ processing”, który kopiuję na ścieżkę virtualenv i używam go bez żadnych problemów z uruchomieniem. (Nie jestem pewien, czy to zawsze jest takie proste.)źródło