我有一个奇怪的现象(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:myfolder
在sys.path_importer_cache
中。但它为什么会到达那里?如何移除它?(我试过importlib.invalidate_caches()
,没有成功…(还有一个提示:如果我在隔离模式(python -I
(下运行python,这个问题就会消失。然而,据我所知,我的用户网站上没有任何可能导致这种情况的东西
有什么想法吗?谢谢
已经想好了。。。我在Anaconda中运行python,并在c:\myfolder中启动了Anaconda Prompt(使用condabin/activate(作为启动文件夹。这就是它进入path_importer_cache的原因。。。如果我简单地用c:开头,问题就消失了。