Mam prosty skrypt Pythona, który importuje różne inne moduły, które napisałem (i tak dalej). Ze względu na moje środowisko, moja PYTHONPATH jest dość długa. Używam również Pythona 2.4.Jak zbudować pojedynczy plik Pythona z wielu skryptów?
Co muszę zrobić, to w jakiś sposób spakować mój skrypt i wszystkie zależności, które nie są częścią standardowego pythona, dzięki czemu mogę wysłać pojedynczy plik do innego systemu, w którym chcę go wykonać. Wiem, że docelowa wersja Pythona jest taka sama, ale jest na Linuksie, gdzie jestem w systemie Windows. W przeciwnym razie użyłbym py2exe.
Idealnie chciałbym wysłać plik .py, który w jakiś sposób zawiera wszystkie wymagane moduły, ale zdecydowałbym się na automatyczne budowanie suwaka, który mogę rozpakować, z wymaganymi modułami w jednym katalogu.
Przyjrzałem się różnym rozwiązaniom w zakresie opakowań, ale wydaje mi się, że nie znalazłem odpowiedniego sposobu na zrobienie tego. Czy coś przeoczyłem?
[edytuj] Wydaje mi się, że jestem dość niejasny w tym, czego szukam. Zasadniczo szukam czegoś takiego jak py2exe, które wytworzy pojedynczy plik (lub 2 pliki) z danego skryptu Pythona, automatycznie włączając wszystkie importowane moduły.
Na przykład, jeśli mam następujące dwa pliki:
[\foo\module.py]
def example():
print "Hello"
[\bar\program.py]
import module
module.example()
I biegnę:
cd \bar
set PYTHONPATH=\foo
program.py
Wtedy to będzie działać. Co chcę jest aby móc powiedzieć:
magic program.py
i kończy się z jednego pliku, lub ewentualnie pliku i zamek błyskawiczny, który można następnie skopiować do Linuksa i metę. Nie chcę instalować moich modułów w docelowym systemie Linux.
Myślę, że szukasz pakietu [http://docs.python.org/tutorial/modules.html#packages] (tak opisuje Drahkar w swojej odpowiedzi). Zobacz pytanie [this] (http://stackoverflow.com/questions/4155914/how-to-create-a-python-2-x-package-simple-case) i doskonale przyjętą odpowiedź. – Chris
Możliwy duplikat [Packing Python files w jednym skrypcie .py] (http://stackoverflow.com/questions/4368040/packing-python-files-into-a-single-py-script) –