Python的打包工具(setup.py)實戰篇


                Python的打包工具(setup.py)實戰篇

                              作者:尹正傑 

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

  當你寫好一個Python項目時,想要開源或者給別的小伙伴使用,這個時候就可以考慮使用打包工具來做這個事情,Python內置的setup.py工具就自帶了這個功能,本片博客將帶你來打包一個自己寫的python項目。

  學會python打包后,可以把自己寫好的模塊發布到公共的PyPI(https://pypi.org/)上,也可以搭建PyPI私服,供企業內部使用。

  目前PyPI里面的模塊沒用太好的審核機制,不保證安全,因此要慎重使用。據說,數據分析領域基於python的開源模塊在不同的操作系統算出的結果竟然不同,這意味着所有基於該模塊的計算發表的論文結果都是不准確的!

 

 

 

一.查找setup幫助文檔

1>.找到setup的幫助文檔,如下圖所示

2>.如下圖所示,點擊"Distttributing Python Modules(Legacy version)"

3>.如下圖所示,點擊"Writing the Setup Script"

4>.閱讀官網文檔

5>.在自己的項目根目錄下創建setup.py文件,修改內容如下所示

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @author :yinzhengjie
# blog:https://www.cnblogs.com/yinzhengjie

from distutils.core import setup

setup(
    # 指定項目名稱,我們在后期打包時,這就是打包的包名稱,當然打包時的名稱可能還會包含下面的版本號喲~
    name='devops',
    # 指定版本號
    version='0.1.1',
    # 這是對當前項目的一個描述
    description='Python automatic operation and maintenance platform',
    # 作者是誰,指的是此項目開發的人,這里就寫你自己的名字即可
    author='yinzhengjie',
    # 作者的郵箱
    author_email='y1053419035@qq.com',
    # 寫上項目的地址,比如你開源的地址開源寫博客地址,也開源寫GitHub地址,自定義的官網地址等等。
    url='https://www.cnblogs.com/yinzhengjie/p/14124623.html',
    # 指定包名,即你需要打包的包名稱,要實際在你本地存在喲,它會將指定包名下的所有"*.py"文件進行打包喲,但不會遞歸去拷貝所有的子包內容。
    # 綜上所述,我們如果想要把一個包的所有"*.py"文件進行打包,應該在packages列表寫下所有包的層級關系喲~這樣就開源將指定包路徑的所有".py"文件進行打包!
    packages=['devops', "devops.dev", "devops.ops"],
)

 

二.使用setup.py工具對自定義package進行打包操作

1>.查看setup.py工具的幫助信息

python setup.py --help-commands

2>.編譯python的包(本質上是新建了一個build目錄,而后將指定的packages列表包下的所有".py"文件拷貝過去)

python setup.py build

3>.將源文件進行打包操作

python setup.py sdist

4>.基於我們剛剛打包的文件進行安裝

pip install test/dist/devops-0.1.1.tar.gz

5>.卸載咱們剛剛安裝的包

pip uninstall devops

 

三.bdist命令

  bdist命令是一個二進制分發包,或稱作安裝程序。該命令可以生成模板操作系統的安裝程序。

1>.制作windows下的安裝包

python setup.py bdist_wininst  # 創建"*.exe"的文件
python setup.py bdist_msi  # 創建"*.msi"的文件
python setup.py bdist --format=msi  # 同樣是創建"*.msi"的文件

2>.制作rpm包

python setup.py bdist_rpm  # 創建"*.rpm"的文件,該命令需要在Linux操作系統上執行!
python setup.py bdist --format=rpm  # 同上

3>.制作壓縮文件

python setup.py bdist --format=zip  # 創建"*.zip"壓縮文件
python setup.py bdist --format=gztar  # 創建"*.tar.gz"文件

 

四.將python打包成egg包或者whl包(本質上是一個zip文件)

1>.安裝wheel模塊

pip install wheel

2>.修改"setup.py"文件

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @author :yinzhengjie
# blog:https://www.cnblogs.com/yinzhengjie

# from distutils.core import setup
from setuptools import setup  # 注意哈,setuptools是基於distutils進行封裝的,但打wheel包時要從setuptools包導入setup模塊喲~

setup(
    # 指定項目名稱,我們在后期打包時,這就是打包的包名稱,當然打包時的名稱可能還會包含下面的版本號喲~
    name='devops',
    # 指定版本號
    version='0.1.1',
    # 這是對當前項目的一個描述
    description='Python automatic operation and maintenance platform',
    # 作者是誰,指的是此項目開發的人,這里就寫你自己的名字即可
    author='yinzhengjie',
    # 作者的郵箱
    author_email='y1053419035@qq.com',
    # 寫上項目的地址,比如你開源的地址開源寫博客地址,也開源寫GitHub地址,自定義的官網地址等等。
    url='https://www.cnblogs.com/yinzhengjie/p/14124623.html',
    # 指定包名,即你需要打包的包名稱,要實際在你本地存在喲,它會將指定包名下的所有"*.py"文件進行打包喲,但不會遞歸去拷貝所有的子包內容。
    # 綜上所述,我們如果想要把一個包的所有"*.py"文件進行打包,應該在packages列表寫下所有包的層級關系喲~這樣就開源將指定包路徑的所有".py"文件進行打包!
    packages=['devops', "devops.dev", "devops.ops"],
)

3>.打包whl和egg格式,如下圖所示

python setup.py bdist_egg  # 打"*.egg"的包
python setup.py bdist_wheel  # 打"*.whl"的包

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM