Я разрабатываю приложение на python, которое я решил превратить в пакет, который будет устанавливаться с помощью easy_install
или pip
] позже. Я использовал поиск, чтобы найти несколько хороших источников о структуре каталогов для пакетов Python. См. этот ответ или этот пост .
Я создал следующую структуру (я пропустил несколько файлов в списке, чтобы сделать структуру более понятной)
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
После этого я создал исполняемый скрипт server-run
#!/usr/bin/env python from my_package import server server.main()
, который я поместил в bin
каталог. Если я устанавливаю свой пакет с помощью python setup.py install
или через pip / easy_install
, все работает нормально, я могу запустить server-run
, и мой сервер начнет обрабатывать входящие запросы.
Но у меня вопрос, как проверить, что запускаемый сервером
работает в среде разработки ( без предварительной установки my_package
)? Также я хочу использовать этот сценарий для запуска последней версии серверного кода для целей разработки.
Разработка происходит в каталоге Project
, поэтому я получаю ImportError
, если я запускаю ./ bin / server-run
user@host:~/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
Можно ли изменить скрипт bin / server-run
, чтобы он работал, если я запустил его из другой папки где-нибудь в файловой системе (не обязательно из Project
dir)? Также обратите внимание, что я хочу использовать (если это возможно) тот же сценарий для запуска сервера в производственной среде.