Python 如何从 sys.path_importer_cache 中删除路径(无效的命名空间导入)

Python how to remove path from sys.path_importer_cache (invalid namespace import)

我有一个奇怪的现象(Windows,python3.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:\myfoldersys.path_importer_cache 中。 但它为什么会到达那里?我怎样才能删除它? (我试了importlib.invalidate_caches(),没有成功...) 还有一个提示:如果我 运行 python 处于隔离模式 (python -I),这个问题就会消失。但是,我的用户站点中没有任何可能导致它的东西(据我所知。)

有什么想法吗?谢谢!

已经弄清楚了...我在 Anaconda 中 python,并且在 c:\myfolder 作为起始文件夹中启动了 Anaconda Prompt(condabin/activate)。这就是它进入 path_importer_cache 的原因...如果我只是在 c: 中启动它,问题就会消失。