I develop python application which I decided to turn into package to be installed by easy_install or pip later. I've used search to find several good sources about directory structure for python packages See this answer or this post.
I created following structure (I've omitted several files in the list to make structure be more clear)
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
After that I created executable script server-run
#!/usr/bin/env python
from my_package import server
server.main()
which I placed into bin directory. If I install my package with python setup.py install or via pip/easy_install everything works fine, I can run server-run and my server starts to handle incoming requests.
But my question is how to test that server-run works in development environment (without prior installation of my_package)? Also I want to use this script to run latest server code for dev purposes.
Development happens in Project directory so I am getting ImportError if I run ./bin/server-run
user@host:~/dev/Project/$ ./bin/server-run
Traceback (most recent call last):
File "./bin/server-run", line 2, in <module>
import my_package
ImportError: No module named my_package
Is it possible to modify bin/server-run script so it will work if I run it from another folder somewhere in the filesystem (not necessarily from Project dir)? Also note that I want to use (if it is possible to achieve) the same script to run server in production environment.