1

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

有任何想法吗?谢谢!

4

1 回答 1

0

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

于 2020-09-22T07:55:21.940 回答