成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何打包你的 Python 代碼

開發(fā) 后端
將代碼交付給它的目標用戶是一件大事。這是軟件開發(fā)的一個完整的分支,是CI/CD中的“D”,但很多人都忘記了,至少到最后才知道。我寫過關于Autotools和Cmake的文章,但有些語言有自己的方法來幫助你將你的代碼提供給用戶。對于Python來說,向用戶提供代碼的一個常見方法是使用setuptools。

[[435586]]

使用 setuptools 來向用戶交付 Python 代碼。

你花了幾周的時間來完善你的代碼。你已經(jīng)對它進行了測試,并把它發(fā)送給一些親近的開發(fā)者朋友以保證質(zhì)量。你已經(jīng)將所有的源代碼發(fā)布在 你的個人 Git 服務器 上,并且從一些勇敢的早期使用者收到了一些有用的錯誤報告。現(xiàn)在你已經(jīng)準備好將你的 Python 代碼提供給全世界。

就在這時你遇到一個問題。你不知道如何交付產(chǎn)品。

將代碼交付給它的目標用戶是一件大事。這是軟件開發(fā)的一個完整的分支,是 CI/CD 中的 “D”,但很多人都忘記了,至少到最后才知道。我寫過關于 Autotools 和 Cmake 的文章,但有些語言有自己的方法來幫助你將你的代碼提供給用戶。對于 Python 來說,向用戶提供代碼的一個常見方法是使用 setuptools

安裝 setuptools

安裝和更新 setuptools 的最簡單方法是使用 pip

  1. $ sudo python -m pip install --upgrade setuptools

示例庫

我創(chuàng)建了一個簡單的 Python 庫,名為 myhellolib,來作為需要打包的示例代碼。這個庫接受一個字符串,然后用大寫字母打印出這個字符串。

它只有兩行代碼,但項目結構很重要,所以首先創(chuàng)建目錄樹:

  1. $ mkdir -p myhellolib.git/myhellolib

為了確認這個項目是一個可導入的庫(即 Python “模塊”),在代碼目錄中創(chuàng)建一個空文件 __init__.py,同時創(chuàng)建一個包含代碼的文件:

  1. $ touch myhellolib.git/myhellolib/__init__.py
  2. $ touch myhellolib.git/myhellolib/myhellolib.py

在 myhellolib.py 文件中,輸入簡單的 Python 代碼:

  1. def greeter(s):
  2. print(s.upper())

這就是寫好的庫。

測試它

在打包之前,測試一下你的庫。創(chuàng)建一個 myhellolib.git/test.py 文件并輸入以下代碼:

  1. import myhellolib.myhellolib as hello
  2. hello.greeter("Hello Opensource.com.")

運行該腳本:

  1. $ cd myhellolib.git
  2. $ python ./test.py
  3. HELLO OPENSOURCE.COM

它可以工作,所以現(xiàn)在你可以把它打包了。

Setuptools

要用 setuptools 打包一個項目,你必須創(chuàng)建一個 .toml 文件,將 setuptools 作為構建系統(tǒng)。將這段文字放在項目目錄下的 myhellolib.toml 文件中。

  1. [build-system]
  2. requires = ["setuptools", "wheel"]
  3. build-backend = "setuptools.build_meta"

接下來,創(chuàng)建一個名為 setup.py 的文件,包含項目的元數(shù)據(jù):

  1. from setuptools import setup
  2.  
  3. setup(
  4. name='myhellolib',
  5. version='0.0.1',
  6. packages=['myhellolib'],
  7. install_requires=[
  8. 'requests',
  9. 'importlib; python_version == "3.8"',
  10. ],
  11. )

不管你信不信,這就是 setuptools 需要的所有設置。你的項目已經(jīng)可以進行打包。

打包 Python

要創(chuàng)建你的 Python 包,你需要一個構建器。一個常見的工具是 build,你可以用 pip 安裝它:

  1. $ python -m pip install build --user

構建你的項目:

  1. $ python -m build

過了一會兒,構建完成了,在你的項目文件夾中出現(xiàn)了一個新的目錄,叫做 dist。這個文件夾包含一個 .tar.gz 和一個 .whl 文件。

這是你的第一個 Python 包! 下面是包的內(nèi)容:

  1. $ tar --list --file dist/myhellolib-0.0.1.tar.gz
  2. myhellolib-0.0.1/
  3. myhellolib-0.0.1/PKG-INFO
  4. myhellolib-0.0.1/myhellolib/
  5. myhellolib-0.0.1/myhellolib/__init__.py
  6. myhellolib-0.0.1/myhellolib/myhellolib.py
  7. myhellolib-0.0.1/myhellolib.egg-info/
  8. myhellolib-0.0.1/myhellolib.egg-info/PKG-INFO
  9. myhellolib-0.0.1/myhellolib.egg-info/SOURCES.txt
  10. myhellolib-0.0.1/myhellolib.egg-info/dependency_links.txt
  11. myhellolib-0.0.1/myhellolib.egg-info/requires.txt
  12. myhellolib-0.0.1/myhellolib.egg-info/top_level.txt
  13. myhellolib-0.0.1/setup.cfg
  14. myhellolib-0.0.1/setup.py
  15.  
  16. $ unzip -l dist/myhellolib-0.0.1-py3-none-any.whl
  17. Archive: dist/myhellolib-0.0.1-py3-none-any.whl
  18. Name
  19. ----
  20. myhellolib/__init__.py
  21. myhellolib/myhellolib.py
  22. myhellolib-0.0.1.dist-info/METADATA
  23. myhellolib-0.0.1.dist-info/WHEEL
  24. myhellolib-0.0.1.dist-info/top_level.txt
  25. myhellolib-0.0.1.dist-info/RECORD
  26. -------
  27. 6 files

讓它可用

現(xiàn)在你知道了打包你的 Python 包是多么容易,你可以使用 Git 鉤子、GitLab Web 鉤子、Jenkins 或類似的自動化工具來自動完成這個過程。你甚至可以把你的項目上傳到 PyPi,這個流行的 Python 模塊倉庫。一旦它在 PyPi 上,用戶就可以用 pip 來安裝它,就像你在這篇文章中安裝 setuptools 和 build 一樣!

當你坐下來開發(fā)一個應用或庫時,打包并不是你首先想到的事情,但它是編程的一個重要方面。Python 開發(fā)者在程序員如何向世界提供他們的工作方面花了很多心思,沒有比 setuptools 更容易的了。試用它,使用它,并繼續(xù)用 Python 編碼! 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2023-11-12 22:51:14

2025-03-11 08:30:00

Pythonretrying代碼

2024-04-26 08:34:44

Python編程語言PyInstalle

2022-07-26 07:05:50

PythonAPI語法

2012-06-18 15:18:32

JS

2013-03-25 09:41:20

PythonCython

2018-03-30 10:02:08

代碼規(guī)范維護工程師

2017-06-28 16:18:22

編程程序員開發(fā)

2019-10-17 09:57:08

Python設計電腦

2021-04-27 06:44:03

PythonCython編程語言

2020-07-23 14:15:42

Cython的Python代碼

2019-01-30 18:00:21

開源Python庫

2022-06-21 07:41:08

FCPJS代碼

2022-08-15 18:22:22

JS代碼

2022-09-04 15:40:39

JavaScrip狀態(tài)模式軟件

2022-12-06 09:03:44

代碼fork系統(tǒng)

2021-12-29 10:30:15

JMH代碼Java

2017-12-28 10:07:50

程序員代碼庫遺留代碼

2022-12-10 17:47:03

VSCode代碼

2020-05-21 08:53:12

Python技術代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九九色 | 激情欧美日韩一区二区 | 天天躁日日躁xxxxaaaa | 国产精品免费看 | 免费一级欧美在线观看视频 | 亚洲a毛片 | 精品一区二区三区四区 | 国产日韩欧美一区二区 | 欧美91| 综合久久av | 亚洲色图综合 | 久热精品在线播放 | 精品亚洲视频在线 | 欧美综合国产精品久久丁香 | 一区二区三区四区在线视频 | 九九热最新地址 | 一区二区中文字幕 | 亚洲精品一区二区另类图片 | 超黄视频网站 | 粉嫩一区二区三区性色av | 国产在视频一区二区三区吞精 | 欧美日韩视频在线第一区 | 超碰日本 | 中文字幕在线看人 | 国产精品中文字幕在线 | 激情av在线 | 国产一区亚洲二区三区 | 毛片软件 | 欧美一级黑人aaaaaaa做受 | av一区二区在线观看 | 91精品国产一区二区三区 | 日韩精品一区二区三区中文字幕 | 国产一区二区三区四区五区3d | 超碰欧美| 91视频精选 | 日韩av在线一区二区 | 国产精品久久久亚洲 | 91精品www| 午夜精品久久久久久久久久久久久 | 精品三区 | 国产欧美一区二区三区日本久久久 |