Скрипты в пакете python

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

8
задан Community 23 May 2017 в 11:46
поделиться