吐槽一下 pypi 的包名重名机制 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
jenlors

吐槽一下 pypi 的包名重名机制

  •  
  •   jenlors 2020 年 8 月 25 日 4073 次点击
    这是一个创建于 2070 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时候想制作一个 pypi 包并上传到 pypi 上,结果发现包名已经被占用了,更尴尬的是有可能原包根本就很久没维护了,以至于不得不换一个包名,很蛋疼。不知道为什么不像 github 一样弄一个命名空间之类的,也能有效的避免包名抢占之类的事情发生。

    16 条回复    2020-08-26 20:01:42 +08:00
    superrichman
        1
    superrichman  
       2020 年 8 月 25 日 via iPhone
    因为这种方式不 pythonic 。
    simple2025
        span class="no">2
    simple2025  
       2020 年 8 月 25 日
    可能历史遗留问题?
    renmu123
        3
    renmu123  
       2020 年 8 月 25 日 via Android
    中心化是这样的,好的包名被抢了又不维护就很让人生气,npm 也是如此
    crella
        4
    crella  
       2020 年 8 月 25 日 via Android
    apt 和 yum 都是这样的吧……?
    LokiSharp
        5
    LokiSharp  
       2020 年 8 月 25 日 via iPhone
    然后大家都抢命名空间了
    TypeError
        6
    TypeError  
       2020 年 8 月 25 日 via Android
    TypeError
        7
    TypeError  
       2020 年 8 月 25 日 via Android
    @TypeError 果然有人抢注
    aloxaf
        8
    aloxaf  
       2020 年 8 月 25 日
    很多中心化的包管理都这样

    比如 crates.io ( Rust 的中心化包管理平台),就有人恶意批量注 crate 名称。
    当初也讨论了很多,但是最终也没有一个好的解决方案。添加命名空间之类的东西,人家就会抢注命名空间;将命名空间与 GitHub 帐号绑定,又显得太过依赖单一平台……
    iConnect
        9
    iConnect  
       2020 年 8 月 25 日 via Android
    算是一种腐化表现?
    CismonX
        10
    CismonX  
       2020 年 8 月 25 日 via iPhone
    这点 GitHub 做的就比较好,有个 name squatting policy 。如果你发现有个用户名被长期占用但是又毫无作为,你可以向 GitHub 举报,确认后会将这个账号释放掉。
    Darkside
        11
    Darkside  
       2020 年 8 月 25 日
    @CismonX

    补充一下,npm 也有类似的策略,可以在 https://www.npmjs.com/policies/disputes 的 Squatting 章节看到

    不过 GitHub 和 npm 都是商业组织,而 PyPI 是 PSF 下面的非盈利组织,可能没有这么多工作人员
    ClericPy
        12
    ClericPy  
       2020 年 8 月 25 日
    我反而挺不喜欢太长的包名... 挺多库的名字起的都挺有意思的, loguru, pydantic, 因为太常用, 所以强行记住了, 也不怕和其他语言重名(跨语言的时候搞混库的名字真的头疼)

    然后, ichrome 名字也让我抢了, 随手搜了一把, 想把名字换了... 重名的也太多了, 早知道一开始就该起一个不容易重名但是有创意的

    PEP 541 -- Package Index Name Retention | Python.org - https://www.python.org/dev/peps/pep-0541/

    Abandoned projects
    A project is considered abandoned when ALL of the following are met:

    owner not reachable (see Reachability above);
    no releases within the past twelve months; and
    no activity from the owner on the project's home page (or no home page listed).
    ruanimal
        13
    ruanimal  
       2020 年 8 月 26 日
    pypi 包名重名都不是事,两个包的实际包名(文件夹名称)一样才是神坑,比如 enum 和 enum34
    SmiteChow
        14
    SmiteChow  
       2020 年 8 月 26 日
    换个名字易如反掌
    yiyi11
        15
    yiyi11  
       2020 年 8 月 26 日 via Android
    @TypeError 别尬黑,川普入驻 v2 了
    Kobayashi
        16
    Kobayashi  
       2020 年 8 月 26 日 via Android
    包名不能重名,但 import 时名字可以一样啊。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2703 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 59ms UTC 10:10 PVG 18:10 LAX 03:10 JFK 06:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86