V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
alexapollo
V2EX  ›  问与答

Git/Github/Python: 如何把一个项目的部分代码做成一个独立的库?并且保持项目的子项目可以独立运行?

  •  
  •   alexapollo · 2014-02-03 01:38:50 +08:00 · 4024 次点击
    这是一个创建于 3736 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目链接:https://github.com/geekan/scrapy-examples
    在我的这个项目中,我发现有一些代码是冗余的,会造成不必要的代码膨胀(其实即任意爬虫的misc文件夹),我希望把这个项目的这部分代码独立,作成一个公用库。

    个人思路:
    1、在git clone / 下载的时候,用户会自动下载这部分库,拥有库的每个文件夹是独立的。
    2、对于公用库的文件夹,我只需要维护一个git的引用(指向源代码),而不需要维护单独的源代码。

    待选方法:
    Git: submodule / subtree 的方法,但不是很清楚在实际使用时会有哪些坑,而且看起来都比较复杂,不知道哪个比较好用?
    Python: 如果仅仅加个代码库,那么可以直接加在sys.path里。但我希望项目的任何一个部分都可以独立发布,而不需要去copy & paste公有库。

    实际场景:
    在我的scrapy-examples项目中,doubanbook和hrtencent都需要misc库,而两者的misc库都是一致的,我需要把misc库独立开来,但是在发布之后,我可以快速剥离doubanbook,脱离我的项目再进行其他的运用(比如进行深度再加工)


    不知道是否有一个最佳实践?非常乐意见到任何建议!
    2 条回复    1970-01-01 08:00:00 +08:00
    bearcat001
        1
    bearcat001  
       2014-02-03 13:45:38 +08:00
    git submodule
    用这个就好了
    alexapollo
        2
    alexapollo  
    OP
       2014-02-03 13:47:35 +08:00
    @bearcat001 我试试,多谢~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2826 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:22 · PVG 14:22 · LAX 23:22 · JFK 02:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.