当你在 python 中导入一个模块时,python 做的第一件事是在你的直接目录中查找它,如果在那里找不到它,它会在 python 的全局 lib 安装路径中搜索它,如果在那里也没有找到它它会引发错误
在python中还有一个叫做相对和全局导入的东西,我很确定Flask同时使用两者(在模块内部是相对的,对于外部依赖是全局的)
为了让您本地存储的Flask 正常工作,您要么需要让 python 认为它是它的全局模块索引的一部分,要么进入 Flask 并手动修复所有全局导入到相对其外部依赖项
编辑:
例如你有一个 lib 文件夹:
lib/
foo/ # module
bar/ # module
spam/ # module
让 python 将它们视为其全局(用户/系统范围)模块索引的一部分的最懒惰的方法是将它们中的每一个添加到 PATH
在本例中,您对 PATH 的添加将如下所示:
full/path/to/lib/foo
让 python 将 foo 视为来自此 lib 文件夹的模块
如果你想让python也识别bar和spam,你需要以相同的方式添加它们
EDIT2:懒惰的方式第 2 部分
假设您有一些具有依赖关系的模块,它们都在某个文件夹中:
lib/
lol/ # module, its just here
foo/ # module, bar needs this
bar/ # module, spam needs this
spam/ # module, you only need this
再次让python看到lib作为其全局(用户/系统范围)模块索引的一部分的最懒惰的方法是将lib文件夹添加到PATH
你可以从 python 本身这样做:
>>> import sys
>>> sys.path.append('/full/path/to/your/lib')
>>> import spam # now this will work, any other module from lib/ will work too