How to manually install Flask extensions?

笑着哭i 提交于 2020-01-01 12:01:32

问题


I have a Flask project which I've put the flask module (version 0.9) directly beside my app.py file. I've done this so that I can bundle everything into a version control repository that won't require anyone else using it to install additional Python modules.

I want to use flask-login so I've tried to manually install it by downloading the latest version and putting the flask_login.py file in my "local" flask/ext/ directory. However, while I can import flask and import flask.ext, I am unable to import flask.ext.login with Python throwing ImportError: No module named flask.ext.login. import flask.ext.flask_login throws an import error as well.

Is there something I have to do differently if Flask and it's extensions are local to the app.py?


回答1:


The solution is to put the flask_login.py file in the same directory as my app.py file. No modification of the flask/ext/__init__.py file is necessary.

The flask.ext module is intended only as a an extension importer, not a repository for installed extensions. Based on the import path, I thought the flask/ext folder was where extensions were to be copied. This was incorrect. Extensions simply need to be somewhere on the python path.




回答2:


Python doesn't throw the exception in your case, this Flask module is responsible for modifying the standard import hook in the ext folder: https://github.com/mitsuhiko/flask/blob/master/flask/exthook.py

So, I don't think putting flask_login.py into flask/ext is the right way to use extensions in Flask. The documentation recommends to use pip install flask-login or python setup.py install. After that you can do:

import flask_login

If you still want to do it manually, remove the setup() call from ext/__ init__.py. It probably has a good reason why the Flask guys did it this way though :-)




回答3:


Right, but the point was to manually install everything so it could be self-contained in a version control repository that won't require additional installs. I've looked at the setup.py file but can't determine how it achieves the installation. – Soviut Oct 25 at 10:06

Why not use virtualenv to achieve this? You can push your env to source control as well, although that's not normal usage.

See: http://www.virtualenv.org/en/latest/



来源:https://stackoverflow.com/questions/13065682/how-to-manually-install-flask-extensions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!