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

Reply via email to