欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

1、在ubuntu上安裝easy_install

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

2、下載并安裝pyinstaller

在網(wǎng)址下載pyisntaller的包,地址:http://www.pyinstaller.org/,下載對應(yīng)的tar包

假設(shè)下載下來的包是:pyinstaller_2.1.tar.gz

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

進(jìn)入解壓后的目錄:#cd pyinstaller_2.1

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

如果中間沒有報(bào)錯的話,pyinstaller就安裝完成了

3、打包python項(xiàng)目源碼

假如說你的python源碼的結(jié)構(gòu)目錄如下:

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是主函數(shù)文件

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

#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í)行文件

但是此時(shí)你會發(fā)現(xiàn)有問題,因?yàn)檫@個打包的方法它只會打包當(dāng)前目錄下的所有py文件,而不會打包c(diǎn)onfig和database這兩個文件夾,所以此時(shí)的可執(zhí)行文件打包的并不完整,此時(shí)該怎么做呢,咱們接著來

4、重新打包

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

打開main.spec文件,修改前如下內(nèi)容

# -*- 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文件內(nèi)容如下:

# -*- 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 )

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

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

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

5、編譯生成

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

#pyinstaller mian.spec

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

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

感謝感謝?。?!

相關(guān)文章

  • Django頁面數(shù)據(jù)的緩存與使用的具體方法

    Django頁面數(shù)據(jù)的緩存與使用的具體方法

    這篇文章主要介紹了Django頁面數(shù)據(jù)的緩存與使用的具體方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • PyQt5每天必學(xué)之QSplitter實(shí)現(xiàn)窗口分隔

    PyQt5每天必學(xué)之QSplitter實(shí)現(xiàn)窗口分隔

    這篇文章主要介紹了PyQt5每天必學(xué)之窗口分隔,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python-split()函數(shù)實(shí)例用法講解

    Python-split()函數(shù)實(shí)例用法講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python-split()函數(shù)實(shí)例用法講解,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python安裝第三方庫及常見問題處理方法匯總

    Python安裝第三方庫及常見問題處理方法匯總

    本文給大家匯總介紹了Python安裝第三方庫及常見問題處理方法,非常的簡單使用,有需要的小伙伴可以參考下
    2016-09-09
  • python基于tkinter制作無損音樂下載工具(附源碼)

    python基于tkinter制作無損音樂下載工具(附源碼)

    這篇文章主要介紹了python基于tkinter制作無損音樂下載工具(附源碼),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步

    python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步

    這篇文章主要給大家詳細(xì)介紹了python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步,文中有詳細(xì)的代碼示例和圖文介紹,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Python實(shí)現(xiàn)將一段話txt生成字幕srt文件

    Python實(shí)現(xiàn)將一段話txt生成字幕srt文件

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)將一段話txt生成字幕srt文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • Python字典的基礎(chǔ)操作

    Python字典的基礎(chǔ)操作

    這篇文章主要介紹了Python字典的基礎(chǔ)操作,Python中的字典數(shù)據(jù)類型和現(xiàn)實(shí)中的字典很像,它是以鍵值對(鍵和值的組合)的方式把數(shù)據(jù)組織到一起,可以通過鍵找到與之對應(yīng)的值并進(jìn)行操作,下面來看文章金額提內(nèi)容吧,需要的朋友可以參考一下
    2021-11-11
  • Python的基本語法詳解

    Python的基本語法詳解

    本文詳細(xì)講解了Python的基本語法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Python包,__init__.py功能與用法分析

    Python包,__init__.py功能與用法分析

    這篇文章主要介紹了Python包,__init__.py功能與用法,結(jié)合實(shí)例形式分析了Python中包的概念、功能及__init__.py初始化相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01

最新評論