Mam prosty skrypt, który jest zależny od dnspython dla parsowania plików strefy. Chciałbym rozpowszechniać ten skrypt jako pojedynczy .py, który użytkownicy mogą uruchamiać tak długo, jak długo mają zainstalowaną wersję 2.6/2.7. Nie chcę, aby użytkownik instalował zależności na poziomie całej witryny, ponieważ mogą występować konflikty z istniejącymi pakietami/wersjami, ani nie chcę, aby były zfałszowane za pomocą virtualenv. Zastanawiam się, czy istnieje sposób na osadzenie w skrypcie pakietu, takiego jak dnspython (gzip/base64) i dostęp do tego pakietu w czasie wykonywania. Być może rozpakuj go do katalogu w/tmp i dodaj to do sys.path? Nie martwię się o obciążenie związane z uruchamianiem, chcę tylko jedną .py z wszystkimi zależnościami, które mogę dystrybuować.Czy istnieje sposób na osadzanie zależności w skrypcie pythona?
Ponadto, nie byłoby żadnych zależności C do zbudowania, tylko czyste pakiety Pythona.
Edytuj: Skrypt nie musi być plikiem .py. Tak długo, jak jest to pojedynczy plik wykonywalny.
Jeśli możesz złagodzić ograniczenie jednego pliku, możesz po prostu spakować bibliotekę dnspython obok pliku .py, albo jako plik zip lub zwykły plik autonomiczny - który rozwiąże problem zależności. Czy jesteś nieugięty w kwestii posiadania tylko jednego pliku? –
Droga do piekła licencyjnego jest wybrukowana z osadzaniem ... –
@MahmoudAbdelkader Przypuszczam, że zadziała. Python będzie szukał w bieżącym katalogu pakietu, zanim zajrzy gdzie indziej (chociaż uważam, że kolejność ta zmienia się w 3). Nadal żałuję, że nie było sposobu, aby spakować wszystkie zależności jako jeden plik wykonywalny, który użytkownik może uruchomić i nie mieć żadnych problemów. Przypuszczam, że nie musi to być .py. –