我有一个奇怪的现象(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
),这个问题就消失了。但是,我的用户站点中没有任何可能导致它的东西(据我所知。)
有任何想法吗?谢谢!