Я разрабатываю приложение на 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
, и мой сервер начнет обрабатывать входящие запросы.
Но у меня вопрос, как проверить, что 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)? Также обратите внимание, что я хочу использовать (если это возможно) тот же сценарий для запуска сервера в производственной среде.