flask 当中获得运行 app 脚本的根目录这种写法是否多余

2015-06-15 10:56:26 +08:00
 cc7756789

run.py

from flask import Flask
app = Flask(__name__)

flask的源码:

def _get_package_path(name):
    try:
        return os.path.abspath(os.path.dirname(sys.modules[name].__file__))
    except (KeyError, AttributeError):
        return os.getcwd()

class Flask:
    def __init__(self, name):
        self.name = name
        self.root_path = _get_package_path(self.name)

这其中 _get_package_path 这么写也能获得run.py的根目录:

def _get_package_path(name):
    try:
        return os.path.abspath(os.path.dirname(name))
    except (KeyError, AttributeError):
        return os.getcwd()

为什么要加上sys.modules[name].__file__

3947 次点击
所在节点    Python
1 条回复
yuankui
2015-06-15 14:42:28 +08:00
因为函数命名的节操: do what you say,say what you mean

根据函数命名: 这里是要根据模块名,取得模块文件路径

而不是仅仅实现一个功能

另外
如果出现
.
└── hello
├── __init__.py
└── kitty
├── __init__.py
└── real_module.py

$ cat hello/__init__.py
import kitty.real_module as real_module

的情况hello中的real_module虽然叫做hello.real_module
但是,他的文件路径却在


这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/198614

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX