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 strcture 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 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.