<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          多個 Python 項目怎么調(diào)用我自己的工具函數(shù)?

          共 1535字,需瀏覽 4分鐘

           ·

          2022-04-13 22:10

          這是「進擊的Coder」的第 604?篇技術(shù)分享作者:kingname來源:未聞 Code

          閱讀本文大概需要 4 分鐘。


          在多年寫代碼的過程中,我總結(jié)了不少常用的工具函數(shù)。這些工具函數(shù)有的能夠?qū)崿F(xiàn)快速重試網(wǎng)絡(luò)請求,有的可以把任意格式的時間轉(zhuǎn)成標(biāo)準(zhǔn)格式,還有的可以自動生成正則表達式。

          我把這些工具函數(shù)分別放到多個.py文件中。然后把這些.py文件放在一個叫做my_awesome_util的文件夾中。

          由于我沒有把這些代碼上傳到 Pypi 或者 Github,因此我每次在新的項目中要使用時,都要把my_awesome_util文件夾復(fù)制到新的項目中,非常麻煩,而且會形成大量的重復(fù)代碼。

          有沒有什么辦法,能讓新開的項目直接就能導(dǎo)入這些工具函數(shù)呢?就像導(dǎo)入官方模塊import time一樣,如果我要使用時間相關(guān)的工具函數(shù),我只需要import time_util就可以了。

          首先要排除的方法,就是手動在代碼里面,通過sys.path添加文件夾。因為這個方法需要在每個項目的入口文件中增加兩行代碼,無法做到全自動。

          今天的方法,是在 Python 的site-packages文件夾中做文章。相信很多同學(xué)都知道,任何放到site-packages文件夾里面的.py文件或者文件夾,都可以在 Python 中直接導(dǎo)入:

          711d6313b6b092bab81da4a3a1092683.webp

          看到這里,肯定有同學(xué)要問,那是不是把my_awesome_util文件夾整個復(fù)制到site-packages文件夾中呢?

          當(dāng)然不是的。因為我的工具包里面的代碼是在持續(xù)演進的,我會經(jīng)常更新里面的代碼,放到site-packages里面以后,代碼修改起來很不方便。

          我們要用到的,是 Python 的一個特性,叫做.pth文件。在site-packages文件夾中,任意創(chuàng)建一個.pth文件。文件名可以隨便取,只要不跟已有的模塊沖突就可以了。例如叫做xxxx.pth。這個文件里面只有一行,就是my_awesome_util文件夾的絕對路徑。例如:

          ab5a7467d00c0fd6e5fb64806c9ca331.webp

          現(xiàn)在,我在任何一個文件夾中啟動 Python,直接就可以導(dǎo)入my_awesome_util文件夾中的任何.py文件:

          bf675aed6b7dc1c3ba3ebde66442bea5.webp

          .pth文件可以有很多行,每行一個文件夾的絕對路徑,就可以讓 Python 同時導(dǎo)入這些文件夾里面的所有.py文件。

          有時候,我們的電腦上有多個虛擬環(huán)境。A 環(huán)境有 pandas,沒有 pymongo;B 環(huán)境有 pymongo,但沒有 pandas?,F(xiàn)在我在 B 環(huán)境里面要寫一段代碼,既需要 pandas,又需要 pymongo 怎么辦呢?如果不想重新安裝,我可以把 A 環(huán)境的site-packages文件夾的絕對路徑,寫入到一個.pth文件中,然后把這個文件存放到 B 環(huán)境的site-packages文件夾中。這樣,我就可以在B環(huán)境里面直接使用 A 環(huán)境中的所有第三方庫了。

          有同學(xué)會問,怎么知道site-packages文件夾在哪里呢?其實只需要執(zhí)行下面兩行代碼就能查詢到:

          >>>?import?sysconfig
          >>>?print(sysconfig.get_path('purelib'))

          運行效果如下圖所示:

          acdaf1f787e3a3e54508099cfc1331d4.webp



          1cb636760abc0fcc95e81dbef39302a4.webp

          End

          崔慶才的新書《Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)(第二版)》已經(jīng)正式上市了!書中詳細(xì)介紹了零基礎(chǔ)用 Python 開發(fā)爬蟲的各方面知識,同時相比第一版新增了 JavaScript 逆向、Android 逆向、異步爬蟲、深度學(xué)習(xí)、Kubernetes 相關(guān)內(nèi)容,?同時本書已經(jīng)獲得 Python 之父 Guido 的推薦,目前本書正在七折促銷中!

          內(nèi)容介紹:《Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)(第二版)》內(nèi)容介紹


          bd5120a264c5e5672be05bf11bb4a3af.webp


          掃碼購買




          好文和朋友一起看~


          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产毛片儿| 亚洲天堂网站 | 成年人视频免费在线观看大香蕉 | 日韩精品无码一级 | 性v天堂网 |