2011-01-07 14 views
16

Chcę utworzyć prywatne, samodzielne środowisko Python, które nie ma połączenia z bibliotekami systemowymi (tak jak robi virtualenv), a także zawiera własne wersje standardowych bibliotek C/C++ dla pakietów Python, które są po prostu opakowaniem dla tych biblioteki (na przykład PIL i libjpeg).Jaki jest najlepszy sposób na stworzenie prywatnego, autonomicznego środowiska python?

Widziałem aplikacje komercyjne, które rozpowszechniają cały katalog w katalogu, więc wiem, że można to zrobić.

Pytanie brzmi, czy istnieje narzędzie, które ułatwia to zadanie? Virtualenv prawie doprowadza mnie tam, zwł. z opcjami --no-site-packages i flagami -relocatable, ale nie rozwiązuje problemu w przypadku standardowych bibliotek "C". Chcę na przykład móc zbudować PIL, który używa dołączonej prywatnej wersji libjpeg i libpng

Wszelkie sugestie?

+1

Czy to na własny użytek lub chcesz zapakować go do dystrybucji? To trochę niejasne. –

+0

Dla własnego użytku. Idealnie, chciałbym "przenośne środowisko" mogę przenieść z maszyny na maszynę o tej samej podstawowej architekturze i os –

Odpowiedz

1

Spróbuj cx_Freeze lub py2exe. Są one używane do pakowania aplikacji Python, aby można je było redystrybuować i zawierają wszystkie pakiety/biblioteki, od których to zależy.

+0

Szukałem raczej sposobu na przenośne środowisko programistyczne, które mogłem zainstalować na każdej używanej maszynie, a nie zamrożony system do dystrybucji. Ale może te programy do pakowania mogą zostać użyte do zamrożenia środowiska dev ... –

+1

Rozumiem. W takim przypadku możesz po prostu spróbować użyć setuptools, aby utworzyć dystrybucję źródłową z zdefiniowanymi parametrami install_requires, dzięki czemu uzyskasz wszystkie zależności, których potrzebujesz od pypi. Następnie stworzenie środowiska programistycznego na innej maszynie byłoby po prostu pobraniem źródeł do tego komputera i uruchomieniem skryptu instalacyjnego. – maranas

1

Z powodzeniem użyłem py2exe. Jest też cx_Freeze.

Zobacz również tutaj po więcej sugestii:

odniesieniu do tego oświadczenia:

że nie Link do bibliotek systemowych

You oczywiście nie może całkowicie wyeliminować, że wymaga niektórych bibliotek systemowych. Jeśli chcesz aplikację Windows, będziesz musiał użyć na przykład Windows API. Zakładam, że nie chcesz łączyć całej kopii systemu Windows z aplikacją, na wypadek gdyby nie miały one zainstalowanego systemu Windows ...

+1

Dobrze. Rzeczy, które są zwykle zawarte w systemie operacyjnym. Ale specjalne biblioteki używane przez konkretny pakiet –

5

Brzmi to jak to, co naprawdę chcesz zrobić, aby spakować dane instalacja Pythona i skrypt w pakiecie do dystrybucji. Można wykonać następujące czynności:

  • Download, skompilować i zainstalować Pythona w katalogu projektu (tj. python-toolchain)
  • utworzyć skrypt prefiks (toolchain) że zajmie ścieżkę względną i aktualizuj PATH, PYTHONPATH, LD_LIBRARY_PATH dynamicznie.
 
#!/bin/sh 

# If your clever you can determine install directory dynamically 
prefix='install directory' 
toolchain=$prefix/python-toolchain 
export PATH=$toolchain/bin:$prefix/app/bin:$PATH 
export LD_LIBRARY_PATH=$toolchain/lib:$LD_LIBRARY_PATH 
export PYTHONPATH=$prefix/app/lib:$PYTHONPATH 
exec $* 
  • Magia cookies w skrypcie aplikacji może wyglądać następująco:
 
#!.../install directory/toolchain python 

print "Hello World!" 
  • Teraz powinno być w stanie dystrybuować katalog takiego:
    • package/
      • python-toolchain/
      • app/
Powiązane problemy