gpt4 book ai didi

python - mypy 和分发命名空间包

转载 作者:行者123 更新时间:2023-12-03 21:25:37 25 4
gpt4 key购买 nike

我有一组要在 python3.6 环境中运行的命名空间包。

它们分别设置如下:

if sys.version_info < (3, 6):
print("Python versions < 3.6 unsupported", file=sys.stderr)
sys.exit(1)

setup(
name="mynamespace.subpackage",
version=VERSION,

packages=[
"mynamespace.subpackage",
],
package_dir={"": "src"},
package_data={
"": [],
},
include_package_data=True,
zip_safe=False,

install_requires=[
"mynamespace.core", # May have explicit dependencies that are not cyclic
],

namespace_packages=["mynamespace"],
...
)

所有的子包都可以并排安装。

当我想通过 mypy 进行强大的类型检查时,问题就来了. mypy找不到 mynamespace.coremynamespace.subpackage 的源文件上运行时的子包(例如)这意味着我没有在我的子包边界上进行健壮的类型检查。

这似乎是一个已知问题: https://github.com/python/mypy/issues/1645

Guido 提到解决方法是“添加一个虚拟 __init__.py__init__.pyi 文件”,但他并没有真正详细说明,事实证明这对我来说并不像我希望的那样明显。将这些文件添加到本地 repo 允许 mypy 按预期在本地 repo 上运行,我无法弄清楚如何访问同级命名空间包中的键入信息。

我的问题是:我将如何修改 mynamespace.core -- 这样安装后, mypy是否能够在其他模块中获取它的类型信息?

最佳答案

希望你现在已经修好了(或者放弃了!!),但对于任何同胞来说,答案是运行:mypy --namespace-packages -p mynamespace.subpackage请注意,当您使用 -p arg 您也不能指定目录。

关于python - mypy 和分发命名空间包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48668176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com