簡體   English   中英

mypy 並分發命名空間包

[英]mypy and distributing a namespace package

我有一組要在 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.core子包被在源文件運行時mynamespace.subpackage (例如),這意味着我不明白在我的分裝的界限強大的打字檢查。

這似乎是一個已知問題: https : //github.com/python/mypy/issues/1645

Guido 提到解決方法是“添加一個虛擬的__init__.py__init__.pyi文件”,但他並沒有詳細說明,事實證明這對我來說並不像我希望的那么明顯。 將這些文件添加到本地存儲庫允許 mypy 按預期運行本地存儲庫,我不知道如何訪問同級命名空間包中的輸入信息。

我的問題是:我將如何修改mynamespace.core —— 以便在安裝時, mypy能夠在其他模塊中獲取它的類型信息?

希望你現在已經修復了它(或放棄了!!)但是對於任何同胞來說,答案是運行:

mypy --namespace-packages -p mynamespace.subpackage

請注意,當您使用-p arg 時,您也不能指定目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM