代码之家  ›  专栏  ›  技术社区  ›  Géry Ogam

命名空间包\uu spec \uuuuuu.loader和\uuuuu loader \uuuuuuuu属性未设置为无

  •  0
  • Géry Ogam  · 技术社区  · 7 年前

    这个 Python Language Reference 国家:

    命名空间部分。路径条目查找器将规范上的加载程序设置为 None 和子模块搜索位置到包含

    这个 Python Library Reference 国家:

    用于装载的装载机。对于命名空间包,应该 没有 .

    a/ b/ 在文件系统上:

    a/
      namespace_package/
        module_1.py
        module_2.py
    b/
      namespace_package/
        module_3.py
    

    PYTHONPATH 环境变量:

    export PYTHONPATH="a:b"
    

    最后导入名称空间包并打印其 __spec__.loader __loader__ CPython 3.7解释器的属性:

    python3 -c "import namespace_package; print(namespace_package.__spec__.loader); print(namespace_package.__loader__)"
    

    表明他们是 :

    <_冻结的\u importlib \u external.\u命名空间加载器对象位于0x104b04128>

    3 回复  |  直到 7 年前
        2
  •  1
  •   Vinay Sajip    7 年前

    我猜那是一次 None ,但由于Python中的更改,不再是。是不是给你带来了麻烦?如果是这样的话,我会提出一个问题,但解决方案很可能是更新文档。您能检查一下python3.6和/或3.5的结果吗?也可能值得检查Python发行说明,看看这方面有什么更新。

        3
  •  1
  •   Eric Snow    7 年前

    在这种情况下, mod.__spec__.loader 不是一回事 mod.__loader__ . 规范的加载程序应该仍然是 None . 模块的装入器由导入机器设置为内部 _NamespaceLoader ,部分原因是为了重新加载。也许医生对此还不够清楚。

    推荐文章