【问题标题】:Python how to remove path from sys.path_importer_cache (invalid namespace import)Python 如何从 sys.path_importer_cache 中删除路径(无效的命名空间导入)
【发布时间】:2020-09-21 14:59:23
【问题描述】:

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

有什么想法吗?谢谢!

【问题讨论】:

    标签: python import anaconda namespace-package


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2017-01-25
      • 2019-03-14
      • 2011-01-06
      相关资源
      最近更新 更多