Mam pytania dotyczące plików jaj w Pythonie.
Mam dużo kodu Pythona uporządkowanego według pakietów i próbuję tworzyć pliki jaj. Postępuję zgodnie z instrukcjami , ale są one bardzo powszechne.
W związku z tym wydaje mi się, że muszę mieć plik setup.py.
- Czy możesz mi powiedzieć, co muszę umieścić w pliku setup.py i gdzie powinien się znajdować?
- Przypuszczam, że wystarczy utworzyć plik setup.py, a następnie uruchomić „setup.py bdist_egg”, aby pobrać plik jajko. Czy mógłbyś potwierdzić?
- Czy można dołączyć tylko pliki .pyc do pliku egg?
- Mając plik .egg, jak mogę po prostu uruchomić z niego kod bez rozpakowywania, jak
java -jar <jar file>
robi?
Odpowiedzi:
Czytasz niewłaściwą dokumentację. Chcesz tego: https://setuptools.readthedocs.io/en/latest/setuptools.html#develop-deploy-the-project-source-in-development-mode
Tworzenie setup.py jest opisane w dokumentacji distutils w standardowej dokumentacji biblioteki Pythona tutaj . Główna różnica (w przypadku jaj pytona) pochodzi
import setup
od Ciebiesetuptools
, a niedistutils
.Tak. To powinno być słuszne.
Nie sądzę.
pyc
pliki mogą być zależne od wersji i platformy. Możesz być w stanie otworzyć jajko (powinny to być tylko pliki zip) i usunąć.py
pliki pozostawiając.pyc
pliki, ale nie jest to zalecane.Nie jestem pewny. To może być „tryb programowania”. A może szukasz trybu „py2exe” lub „py2app”?
źródło
W przypadku # 4, najbliższą rzeczą do uruchomienia Java z plikiem jar dla Twojej aplikacji jest nowa funkcja w Pythonie 2.6, wykonywalne pliki zip i katalogi .
Gdzie myapp.zip jest plikiem zip zawierającym
__main__.py
plik, który jest wykonywany jako plik skryptu do wykonania. W pliku można również uwzględnić zależności pakietów:Możesz także wykonać jajko, ale inkantacja nie jest tak przyjemna:
# Bourn Shell and derivatives (Linux/OSX/Unix) PYTHONPATH=myapp.egg python -m myapp
Spowoduje to umieszczenie myapp.egg w ścieżce Pythona i użycie argumentu -m do uruchomienia modułu. Twój plik myapp.egg prawdopodobnie będzie wyglądał następująco:
Python będzie działał
__init__.py
(powinieneś to sprawdzić__file__=='__main__'
w swojej aplikacji, aby użyć wiersza poleceń).Pliki Egg to po prostu pliki zip, więc możesz być w stanie dodać
__main__.py
do swojego jajka za pomocą narzędzia zip i uczynić go wykonywalnym w Pythonie 2.6 i uruchomić go tak, jakpython myapp.egg
zamiast powyższej inkantacji, w której ustawiono zmienną środowiskową PYTHONPATH.Więcej informacji o plikach wykonywalnych zip, w tym o tym, jak uczynić je bezpośrednio wykonywalnymi za pomocą shebang, można znaleźć w poście na blogu Michaela Foorda na ten temat .
źródło
Myślę, że zamiast jaja powinieneś teraz używać kół Pythona do dystrybucji.
źródło