On 8/26/2014 12:03 PM, Jon Ribbens wrote:
Flask suggests the following file layout:
runflaskapp.py
flaskapp/
__init__.py
runflaskapp.py contains:
from flaskapp import app
app.run(debug=True)
flaskapp/__init__.py contains:
from flask import Flask
app = Flask(__name__)
Unless there is something else in flaskapp, this seems senseless. Why
not runflaskapp.py:
from flask import Flask
app = Flask(__name__)
app.run(debug=True)
Running this with 'python3 runflaskapp.py' works fine.
You are either giving this in directory 'x' containing runflaskapp.py or
given a longer pathname. In either case, directory 'x' get prepended to
sys.path, so that 'import flaskapp' finds flaskapp in x.
However it
seems to me that a more Python3onic way of doing this would be to
rename 'runflaskapp.py' as 'flaskapp/__main__.py'
> and then run the whole thing as 'python3 -m flaskapp'.
In what directory?
> Unfortunately this doesn't work:
Because x does not get added to sys.path.
$ python3 -m flaskapp
* Running on http://127.0.0.1:5000/
* Restarting with reloader
Traceback (most recent call last):
File "/home/username/src/flaskapp/__main__.py", line 1, in <module>
from flaskapp import app
ImportError: No module named 'flaskapp'
Does anyone know why and how to fix it?
Since flaskapp/__main__.py is found and run, make the change suggested
above that eliminates the flaskapp import.
Or put flaskapp in site_packages, which is on the import search path .
Pip, and I presume other installers, typically puts startup scripts in a
directory that is on the system path. For Windows, this is
pythonxy/Scripts. But this is more than I would do for most local apps.
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list