Rozwijam aplikację Pythona, którą postanowiłem przekształcić w pakiet do zainstalowania przez easy_install
lub pip
później. Użyłem wyszukiwarki, aby znaleźć kilka dobrych źródeł o strukturze katalogów dla pakietów Pythona. Patrz: this answer lub this post.Skrypty w pakiecie Pythona
stworzyłem następujące struktury (I zostały pominięte kilka plików na liście, aby strcture być bardziej jasne)
Project/ |-- bin/ |-- my_package/ | |-- test/ | | |-- __init__.py | | |-- test_server.py | |-- __init__.py | |-- server.py | |-- util.py |-- doc/ | |-- index.rst |-- README.txt |-- LICENSE.txt |-- setup.py
Potem stworzyłem wykonywalny skrypt server-run
#!/usr/bin/env python from my_package import server server.main()
które umieściłem w bin
katalogu. Jeśli zainstaluję pakiet z python setup.py install
lub przez pip/easy_install
wszystko działa poprawnie, mogę uruchomić server-run
i mój serwer zacznie obsługiwać przychodzące żądania.
Ale moje pytanie jest jak test, który server-run
prace w środowisku programistycznym (bez uprzedniej instalacji my_package
)? Również chcę użyć tego skryptu do uruchomienia najnowszego kodu serwera dla celów programistycznych.
Rozwój dzieje się w Project
katalogu więc otrzymuję ImportError
jeśli biegnę ./bin/server-run
[email protected]:~/dev/Project/$ ./bin/server-run Traceback (most recent call last): File "./bin/server-run", line 2, in import my_package ImportError: No module named my_package
to możliwe, aby zmodyfikować bin/server-run
skrypt tak to będzie działać, jeśli uruchomię go z innego folderu gdzieś w systemie plików (niekoniecznie od Project
reż.)? Zauważ też, że chcę używać (jeśli jest to możliwe) tego samego skryptu do uruchamiania serwera w środowisku produkcyjnym.
Ale jeśli mogę użyć tego kodu 'serwera run' nie będzie działać po instalacji pakietu. – Alik
Zaktualizowany sposób, aby najpierw wypróbować wersję normalną. – agf
Huh. Zapomniałem o wyjątku ImportException :) Dzięki! – Alik