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



我有一个奇怪的现象(Windows,python 3.8.5(:我有一个子文件夹:c:myfolder。不知怎的,这个文件夹进入了sys.path_importer_cache,现在c:\myfolder中的每个子文件夹都可以作为命名空间包导入。例如,有一个子文件夹:c:myfolderfoo如果我尝试导入foo,我会得到这个:

import foo
foo
<module 'foo' (namespace)>
foo.__path__
_NamespacePath(['c:\myfolder\foo'])

并且其加载器是CCD_ 4。

问题是,foo本身就是一个包,它被安装到站点包中,现在它不能从那里导入,因为这个奇怪的命名空间包胜过了它

我搞砸了什么?我在哪里看?我只能找到这个提示,c:myfoldersys.path_importer_cache中。但它为什么会到达那里?如何移除它?(我试过importlib.invalidate_caches(),没有成功…(还有一个提示:如果我在隔离模式(python -I(下运行python,这个问题就会消失。然而,据我所知,我的用户网站上没有任何可能导致这种情况的东西

有什么想法吗?谢谢

已经想好了。。。我在Anaconda中运行python,并在c:\myfolder中启动了Anaconda Prompt(使用condabin/activate(作为启动文件夹。这就是它进入path_importer_cache的原因。。。如果我简单地用c:开头,问题就消失了。

最新更新