一日一技:如何正確在自己項目里面集成別人的代碼?

      網友投稿 872 2025-03-31

      更進一步,這個代碼不是 Python 寫的,可能是 Golang,可能是 Node.js,可能是 C++。如果你的項目想直接調用對方的代碼,又應該怎么辦呢?

      有人說,那就把別人的代碼先下載到本地,然后復制到自己項目中。但這樣有一個問題,如果別人代碼更新了,你如何即時更新呢?

      以我之前的一個項目?kingname/JsonPathFinder[1]?為例。這個項目里面沒有setup.py,也沒有把它上傳到pypi 上面。所以你沒有辦法使用 pip 進行安裝。要使用它本身很簡單,直接把這個文件JsonPathFinder.py復制到你自己的項目里面就可以了。但是這樣一來,你不知道我什么時候更新了代碼,難道你每天要上來看看我有沒有更新?

      為了解決這個問題,我們可以使用git submodule功能。這個功能,可以讓你把一個 Git 源掛載到另外一個源里面。

      假設我們現在有一個項目:test_module,它想使用JsonPathFinder來解析 JSON,假設項目的代碼如下圖所示:

      顯然,現在運行肯定會報錯,因為我還沒有把JsonPathFinder.py文件復制過來。但我并不準備直接復制文件,相反,我要做的是,以子模塊的形式,把JsonPathFinder項目添加進來。

      首先確保我們目前的項目已經使用 git進行了源碼管理。如果你還沒有,那么,記得執行git init。

      然后,我們執行如下命令:

      git submodule add https://github.com/kingname/JsonPathFinder.git

      一日一技:如何正確在自己項目里面集成別人的代碼?

      運行效果如下圖所示:

      現在,我們再來運行main.py,可以看到代碼已經被正常執行了:

      并且 git 會自動 Clone 子模塊到對應的文件夾里面。我們使用子模塊里面的代碼,就像是直接使用復制粘貼下來的代碼一樣。

      git submodule update --remote

      Git 就會自動更新子模塊的代碼了。你完全可以把這條命令寫到 Makefile 里面,結合我以前講 Makefile 的文章,做一個自動更新的功能,每次當你要運行自己項目的時候,都自動更新一下子模塊。

      關于子模塊的更多操作,你可以參考 Git 的官方文檔:Git - 子模塊[2]。

      參考資料

      Git

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel中怎么批量替換星號為乘號?Excel星號全部替換乘號方法
      下一篇:懂得芯片生產制造,看懂制造商從小處用心的美好
      相關文章
      亚洲高清视频免费| 亚洲国产精品无码AAA片| 久久精品a亚洲国产v高清不卡| 在线A亚洲老鸭窝天堂| 亚洲中文字幕丝袜制服一区| 亚洲高清免费视频| 亚洲AV无码专区日韩| 亚洲第一页日韩专区| 亚洲精品无码久久毛片| 亚洲天堂免费在线视频| 亚洲国产激情一区二区三区| 亚洲成av人在片观看| 亚洲欧洲中文日韩av乱码| 亚洲婷婷国产精品电影人久久| 亚洲性久久久影院| 亚洲无线码在线一区观看| 国产亚洲精品va在线| 久久久综合亚洲色一区二区三区| 久久久亚洲精品无码| 337p欧洲亚洲大胆艺术| 亚洲欧洲日产国码二区首页| 亚洲一区在线观看视频| 亚洲AV男人的天堂在线观看| 亚洲日本中文字幕天天更新| 蜜桃传媒一区二区亚洲AV| 亚洲а∨天堂久久精品| 激情97综合亚洲色婷婷五| 亚洲av午夜福利精品一区| 18亚洲男同志videos网站| 亚洲一级黄色大片| 亚洲欧好州第一的日产suv| 国产午夜亚洲精品不卡电影| 亚洲综合久久夜AV | 国产AV无码专区亚洲精品| 久久精品九九亚洲精品| 亚洲国产精品综合久久网各| 亚洲国产系列一区二区三区| 亚洲AV无码一区二区乱子仑 | 久久精品国产精品亚洲毛片| 亚洲国产中文在线二区三区免| 亚洲人成www在线播放|