【发布时间】:2020-09-21 14:59:23
【问题描述】:
我有一个奇怪的现象(Windows,python 3.8.5):我有一个文件夹:c:\myfolder。不知何故,这个文件夹进入了sys.path_importer_cache,现在 c:\myfolder 中的每个子文件夹都可以作为命名空间包导入。
例如,有这个子文件夹:c:\myfolder\foo\
如果我尝试导入 foo,我会得到:
import foo
foo
<module 'foo' (namespace)>
foo.__path__
_NamespacePath(['c:\\myfolder\\foo'])
它的加载器是NamespaceLoader。
问题是,foo 本身是一个包,它安装到站点包中,现在它不会从那里导入,因为这个奇怪的命名空间包胜过它。
我搞砸了什么?我在哪里看?我只能找到这个提示,c:\myfolder 在sys.path_importer_cache 中。
但它为什么会到达那里?我怎样才能删除它? (我试过importlib.invalidate_caches(),没有成功...)
另一个提示:如果我在隔离模式下运行 python (python -I),这个问题就会消失。但是,我的用户站点中没有任何可能导致它的东西(据我所知)。
有什么想法吗?谢谢!
【问题讨论】:
标签: python import anaconda namespace-package