最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

linux環(huán)境打包python工程為可執(zhí)行程序的過程

 更新時間:2024年01月29日 10:08:12   作者:Jelly-小丑魚  
本次需求,在ubuntu上面開發(fā)的python代碼程序需要打包成一個可執(zhí)行程序然后交付給甲方,因為不能直接給源碼給甲方,所以尋找方法將python開發(fā)的源碼打包成一個可執(zhí)行程序,本次在ubuntu上打包python源碼的方法和在window上打包的有點類似,感興趣的朋友跟隨小編一起看看吧

本次又個需求,在ubuntu上面開發(fā)的python代碼程序需要打包成一個可執(zhí)行程序然后交付給甲方,因為不能直接給源碼給甲方,所以尋找方法將python開發(fā)的源碼打包成一個可執(zhí)行程序,注意是打包成在ubuntu上面的可執(zhí)行程序,不是打包成在window上的可執(zhí)行程序,如果需要打包成windows上的可執(zhí)行程序請參照此博客,鏈接:windows下打包python源碼成可執(zhí)行文件

本次在ubuntu上打包python源碼的方法和在window上打包的有點類似,大概流程如下:

1、在ubuntu上安裝easy_install

#sudo apt-get install python-setuptools python-dev build-essential

2、下載并安裝pyinstaller

在網址下載pyisntaller的包,地址:http://www.pyinstaller.org/,下載對應的tar包

假設下載下來的包是:pyinstaller_2.1.tar.gz

然后使用命令解壓包:#tar -cf pyinstaller_2.1.tar.gz

進入解壓后的目錄:#cd pyinstaller_2.1

最后執(zhí)行命令安裝pyinstaller:#sudo python setup.py install

如果中間沒有報錯的話,pyinstaller就安裝完成了

3、打包python項目源碼

假如說你的python源碼的結構目錄如下:

total 16
drwxrwxr-x 2 jelly jelly 4096 Mar 14 15:13 config
drwxrwxr-x 2 jelly jelly 4096 Mar 14 15:13 database
-rw-rw-r-- 1 jelly jelly    2 Mar 14 15:13 main.py
-rw-rw-r-- 1 jelly jelly    3 Mar 14 15:13 manager.py

圖中可以看到有兩個文件夾,兩個py源碼文件,mian.py是主函數文件

然后,我們使用命令打包源碼

#pyinstaller -F main.py

然后就會生成如下目錄

total 28
drwxrwxr-x 3 jelly jelly 4096 Mar 14 15:18 build
drwxrwxr-x 2 jelly jelly 4096 Mar 14 15:13 config
drwxrwxr-x 2 jelly jelly 4096 Mar 14 15:13 database
drwxrwxr-x 2 jelly jelly 4096 Mar 14 15:18 dist
-rw-rw-r-- 1 jelly jelly    2 Mar 14 15:13 main.py
-rw-rw-r-- 1 jelly jelly  813 Mar 14 15:18 main.spec
-rw-rw-r-- 1 jelly jelly    3 Mar 14 15:13 manager.py

圖中dist文件夾下面就是生成的可執(zhí)行文件,可以使用命令./main執(zhí)行生成的可執(zhí)行文件

但是此時你會發(fā)現有問題,因為這個打包的方法它只會打包當前目錄下的所有py文件,而不會打包config和database這兩個文件夾,所以此時的可執(zhí)行文件打包的并不完整,此時該怎么做呢,咱們接著來

4、重新打包

重新打包的的意思是需要修改那個main.spec文件,然后再使用這個文件進行打包,操作流程如下

打開main.spec文件,修改前如下內容

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
             pathex=['/home/jelly/test'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='main',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )

修改后的main.spec文件內容如下:

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
             pathex=['/home/jelly/test'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
dict_database = Tree('/home/jelly/test/database',prefix='database')
a.datas += dict_database
dict_config = Tree('/home/jelly/test/config',prefix='config')
a.datas += dict_config
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='main',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )

可以看到,中間添加了添加兩個文件夾的絕對路徑,是和這個路徑相對應的

pathex=['/home/jelly/test'],

這個路徑是之前工具自己生成的,所以我們添加的兩個目錄的絕對路徑也和它保持一致,這個修改完成后久可以了

5、編譯生成

安裝第4步的修改完成后,再執(zhí)行命令

#pyinstaller mian.spec

即可,這樣打包的程序就包含了兩個依賴的文件夾了

其實最后感覺和在window上面打包生成window上的可執(zhí)行文件的流程差不多,工具也都是用的pyinstaller打包。

感謝感謝?。?!

相關文章

  • TensorFlow實現RNN循環(huán)神經網絡

    TensorFlow實現RNN循環(huán)神經網絡

    這篇文章主要介紹了TensorFlow實現RNN循環(huán)神經網絡,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python實現處理逆波蘭表達式示例

    Python實現處理逆波蘭表達式示例

    這篇文章主要介紹了Python實現處理逆波蘭表達式操作,結合實例形式分析了逆波蘭表達式的概念、原理及Python針對逆波蘭表達式的定義與計算相關操作技巧,需要的朋友可以參考下
    2018-07-07
  • 一文詳解Python集合與不可變集合

    一文詳解Python集合與不可變集合

    在Python的廣闊天地中,數據結構如同繁星點點,各有其獨特的光芒,今天,讓我們一同走進集合(set) 與不可變集合(frozenset) 的奇妙世界,需要的朋友可以參考下
    2026-02-02
  • Python將HTML快速轉換成PDF的方法實現

    Python將HTML快速轉換成PDF的方法實現

    在Web開發(fā)和報告任務中,將HTML內容轉換為PDF是一種常見需求,本文主要介紹了Python將HTML快速轉換成PDF的方法實現,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Python實現批量合并多個txt文件并生成Excel文件

    Python實現批量合并多個txt文件并生成Excel文件

    在數據處理中,有時會面臨合并多個文本文件的任務,本文將詳細介紹如何使用Python批量合并多個txt文件,并將其生成為一個Excel文件,需要的可以參考下
    2023-12-12
  • Python中Playwright?與?pyunit?結合使用詳解

    Python中Playwright?與?pyunit?結合使用詳解

    這篇文章主要介紹了Python中Playwright?與?pyunit?結合使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Linux環(huán)境下Python3.10安裝實踐

    Linux環(huán)境下Python3.10安裝實踐

    作者在CentOS7.8上安裝Python3.10并替換python軟鏈接為python3后,導致yum命令不可用,文中詳細記錄了解決過程,包括安裝Python3.10的步驟和修改python軟鏈接的操作,最后成功恢復了yum命令
    2026-04-04
  • 用pushplus+python監(jiān)控亞馬遜到貨動態(tài)推送微信

    用pushplus+python監(jiān)控亞馬遜到貨動態(tài)推送微信

    這篇文章主要介紹了用pushplus+python監(jiān)控亞馬遜到貨動態(tài)推送微信的示例,幫助大家利用python搶購商品,感興趣的朋友可以了解下
    2021-01-01
  • 使用python爬蟲實現網絡股票信息爬取的demo

    使用python爬蟲實現網絡股票信息爬取的demo

    下面小編就為大家分享一篇使用python爬蟲實現網絡股票信息爬取的demo,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • python繪制堆疊條形圖介紹

    python繪制堆疊條形圖介紹

    大家好,本篇文章主要講的是python繪制堆疊條形圖介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論

武功县| 任丘市| 江城| 西城区| 西平县| 泽库县| 宣城市| 江都市| 当涂县| 岳阳市| 仪陇县| 类乌齐县| 津南区| 新疆| 栖霞市| 闸北区| 新沂市| 三江| 延边| 泗阳县| 仁布县| 东源县| 广东省| 孟津县| 清流县| 安西县| 汶川县| 泽州县| 南阳市| 明水县| 蕉岭县| 巢湖市| 那曲县| 屏南县| 永胜县| 东光县| 六安市| 马龙县| 涿州市| 钟山县| 乌拉特中旗|