1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        最簡(jiǎn)單的方式發(fā)布你的Python應(yīng)用

        共 3303字,需瀏覽 7分鐘

         ·

        2021-05-16 14:54

        閱讀大約需要 3.5 分鐘

        記得之前看過(guò)一篇文章,說(shuō)的是龍哥當(dāng)年準(zhǔn)備賣掉 foxmail,買方是雷軍,雷軍的意思是:就這,我也能寫。于是就沒(méi)有成交。

        我的感覺(jué)就是,程序員寫的軟件,要給不懂技術(shù)的人用才有價(jià)值,否則得到的就是:就這,我也能寫。

        我們不是龍哥,寫不出牛逼的 foxmail,但是寫個(gè)自動(dòng)化的腳本還是可以的,即使是一個(gè)小小的腳本,只要能提供幫助,其他人也是有需求的。

        那么如何將你寫的程序發(fā)布給其他人用呢?

        我嘗試過(guò)一些常用的打包工具,py2exe,pyinstaller,這些工具有一些缺點(diǎn):

        1. 不穩(wěn)定。明明我自己的電腦可以運(yùn)行,放到其他電腦就會(huì)報(bào)錯(cuò)閃退,提示系統(tǒng)缺少 xxx.dll 動(dòng)態(tài)鏈接庫(kù)文件。

        2. 配置文件復(fù)雜。簡(jiǎn)單的打包方式可能無(wú)法滿足需要,復(fù)雜一些的就要寫配置文件,有時(shí)明明寫好的配置文件,就是沒(méi)有生效。

        3. 打包文件大,啟動(dòng)慢。這些工具并不會(huì)編譯成可執(zhí)行文件,而是將 Python 解釋器,依賴的三方庫(kù)一起打包,如果打包成一個(gè)文件,運(yùn)行超慢,因?yàn)檫@些會(huì)一起加載進(jìn)內(nèi)存。

        還有一種方式就是編寫 Web 應(yīng)用程序,發(fā)布成 Web 站點(diǎn)、H5、微信小程序等形式,這個(gè)門檻就有點(diǎn)高了,你需要有一定的經(jīng)驗(yàn)且熟悉 Web 開發(fā),還要購(gòu)買服務(wù)器或者云產(chǎn)品。

        今天分享一下非常簡(jiǎn)單可行的方式發(fā)布 Python 應(yīng)用程序,發(fā)布后用戶只需要雙擊一個(gè)文件就可以啟動(dòng)你的應(yīng)用程序,不懂任何技術(shù)的人都會(huì)使用。

        具體的方法就是使用官網(wǎng)發(fā)布的嵌入式 Python 包,不過(guò)這個(gè)僅適用于 Windows,這也不是什么大不了的,大多數(shù)非程序員用的都是 Windows?!溉绻?Mac 請(qǐng)使用 py2app 來(lái)打包」

        訪問(wèn) www.python.org 下載 Windows embeddable package,如果你自己的電腦是 64 位的,就下載 64 位,如果要做的更通用些就用 32 位的,因?yàn)?64 位電腦可以運(yùn)行 32 位的程序,反之則不行。

        這里我選擇 python-3.9.5,解壓后得到 python-3.9.5-embed-amd64 文件夾,這是一個(gè)免安裝的 Python 環(huán)境,隨便復(fù)制到其他 Windows 平臺(tái)都可以穩(wěn)定運(yùn)行。進(jìn)入目錄,執(zhí)行 .\python,只要是標(biāo)準(zhǔn)庫(kù)都可以導(dǎo)入。

        不過(guò)在正式使用之前,我們還需要進(jìn)行兩點(diǎn)改造。

        安裝 pip 工具

        我們寫程序不可能只用標(biāo)準(zhǔn)庫(kù),還要使用第三方庫(kù),比如 requests,那么就要為 Python 環(huán)境配置 pip。

        1. 從這里下載 get-pip.py 文件
        https://bootstrap.pypa.io/get-pip.py
        1. 將 get-pip.py 存放在 python-3.9.5-embed-amd64 文件夾中,然后進(jìn)入該目錄執(zhí)行:
        .\python get-pip.py  --no-warn-script-location

        即可完成 pip 的安裝:

        此時(shí) pip 已經(jīng)安裝在 Lib\site-packages 下。

        1. 使用 pip

        現(xiàn)在安裝 requests 并 import 測(cè)試。發(fā)現(xiàn)報(bào)了個(gè)錯(cuò),說(shuō)找不到 pip。

        好,現(xiàn)在進(jìn)入 Python 解釋器環(huán)境,看下 Python 的搜索路徑 sys.path,發(fā)現(xiàn)并沒(méi)有 Lib\site-packages,那么們就添加它。

        1. 添加搜索路徑

        進(jìn)入 python-3.9.5-embed-amd64 文件夾,修改文件 python39._pth 文件

        修改之后內(nèi)容如下:

        python39.zip
        .
        ..
        # Uncomment to run site.main() automatically
        import site

        這里修改了兩個(gè)地方,一個(gè)是加入上級(jí)目錄 ..,另一個(gè)是取消注釋 import site。

        加入上級(jí)目錄是為了在該目錄之外存放一些自己寫的 Python 腳本,這樣目錄 python-3.9.5-embed-amd64 就可以保持獨(dú)立,不放入任何自己寫的腳本,免得 Python 環(huán)境相關(guān)的文件被污染。

        取消注釋 import site 會(huì)自動(dòng)運(yùn)行 site.main(),查看 Python 的 Lib/site.py 的源代碼就可以知道 site.main() 會(huì)將 Lib\site-packages 自動(dòng)添加到 sys.path 中,當(dāng)然它的功能還不止這些,我們先知道這些就夠了。

        接下來(lái)再次查看 sys.path,發(fā)現(xiàn) Lib\site-packages 已經(jīng)在里面了:

        再次安裝 requests 并導(dǎo)入測(cè)試,成功:

        發(fā)布程序

        現(xiàn)在就可以寫代碼發(fā)布程序了,我這里寫好了一個(gè)腳本 main.py 獲取用戶輸入的文本,自動(dòng)調(diào)用百度翻譯,返回翻譯的結(jié)果,內(nèi)容如下:

        import json
        import requests
        url='https://fanyi.baidu.com/sug'
        kw = input('請(qǐng)輸入待翻譯的文本:')
        kw = {
            'kw':kw
        }
        header = {
            'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
        }
        response = requests.post(url=url, data=kw, headers=header)
        response.raise_for_status
        response.encoding = response.apparent_encoding
        content_json = response.json()
        #默認(rèn)轉(zhuǎn)成ascii編碼,因此需要設(shè)置成false
        content = json.dumps(content_json,ensure_ascii=False)
        result = json.loads(content)
        print(result["data"])

        然后放在與 python-3.9.5-embed-amd64 文本夾并列的位置,考慮到有人不會(huì)打開命令窗口,我們還需要制作一個(gè) bat 腳本文件,用戶雙擊這個(gè)文件就可以運(yùn)行我們的程序,內(nèi)容如下:

        cmd.exe /K .\python-3.9.5-embed-amd64\python main.py

        這里 cmd 傳入 /K 參數(shù)是為了程序運(yùn)行完成后不關(guān)閉命令窗口,這樣我們就可以看到程序返回了啥,不然直接唰的一下窗口就沒(méi)了。

        最終文件夾如下所示:

        現(xiàn)在將 main.py、雙擊運(yùn)行.bat、python-3.9.5-embed-amd64 壓縮到一個(gè)文件夾 embed_python.7z,發(fā)送給需要的人,他解壓后,雙擊那個(gè) bat 文件就可以運(yùn)行你的程序了:

        壓縮后只有 10 MB 的大小,微信上就可以直接傳輸了,方便。

        如果你嫌上述的制作過(guò)程麻煩,可以直接使用我做好的嵌入式 Python 包,解壓后就可以直接使用,公眾號(hào)「Python七號(hào)」回復(fù)「嵌入式」獲取。

        關(guān)注公眾號(hào)「Python七號(hào)」,學(xué)習(xí)更多 Python 編程技巧。


        瀏覽 51
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩一级黄色电影 | 男人操女生| 日逼网站大全 | 亚洲国产精品一区二区第一页 | 久久地址 | 91爱爱爱爱 | 日本大胆xxxx18肉体摄影 | 俺去也俺来也 | 国产精品深夜福利 | 丰满少妇奶头出奶水 |