为什么这个导入工作?

时间:2015-12-11 17:09:18

标签: python

flaskhttps://github.com/mitsuhiko/flask)项目(简化)的根文件夹如下所示:

flask/
    __init__.py
    ... some more files ...
tests/
    test_basic.py
    ... some more files ...

test_basic.py中的代码:

import flask
# some more code ...

此导入如何成功,因为flask包不是文件树中test_basic.py的兄弟? Python如何知道在哪里找到flask

希望看到from .. import flask。但事实并非如此。为什么这样做?项目使用py.test作为测试权限是否重要?

2 个答案:

答案 0 :(得分:6)

importflask目录导入全局site_packages,而不是您的模块。

如果您要卸载flask,那么您将获得ImportError例外。

答案 1 :(得分:4)

有两种可能性。第一个是烧瓶项目根目录在PYTHONPATH。如果是这种情况,那么因为在flask目录中有一个__init__.py文件,它可以导入整个flask模块。 第二种(更有可能)可能性是Python实际上从您的site_packages目录导入了flask模块,您可能使用pip install flask之类的东西安装了该模块。