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

如何打包你的 Python 代碼

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

[[435586]]

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

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

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

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

安裝 setuptools

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

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

示例庫

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

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

  1. $ mkdir -p myhellolib.git/myhellolib

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

  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())

這就是寫好的庫。

測試它

在打包之前,測試一下你的庫。創建一個 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

它可以工作,所以現在你可以把它打包了。

Setuptools

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

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

接下來,創建一個名為 setup.py 的文件,包含項目的元數據:

  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 需要的所有設置。你的項目已經可以進行打包。

打包 Python

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

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

構建你的項目:

  1. $ python -m build

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

這是你的第一個 Python 包! 下面是包的內容:

  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

讓它可用

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

當你坐下來開發一個應用或庫時,打包并不是你首先想到的事情,但它是編程的一個重要方面。Python 開發者在程序員如何向世界提供他們的工作方面花了很多心思,沒有比 setuptools 更容易的了。試用它,使用它,并繼續用 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語法

2013-03-25 09:41:20

PythonCython

2012-06-18 15:18:32

JS

2017-06-28 16:18:22

編程程序員開發

2018-03-30 10:02:08

代碼規范維護工程師

2020-07-23 14:15:42

Cython的Python代碼

2019-10-17 09:57:08

Python設計電腦

2021-04-27 06:44:03

PythonCython編程語言

2019-01-30 18:00:21

開源Python庫

2021-12-29 10:30:15

JMH代碼Java

2017-12-28 10:07:50

程序員代碼庫遺留代碼

2022-12-10 17:47:03

VSCode代碼

2022-06-21 07:41:08

FCPJS代碼

2022-08-15 18:22:22

JS代碼

2022-09-04 15:40:39

JavaScrip狀態模式軟件

2020-05-21 08:53:12

Python技術代碼

2022-12-06 09:03:44

代碼fork系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色av观看 | 国产精彩视频 | 特级黄一级播放 | 在线a视频 | 日本不卡一区二区三区在线观看 | 欧美精品首页 | 天天影视色综合 | 一区二区在线 | 成人一区二区三区在线观看 | 一区二区精品电影 | 日韩成人免费av | 久久综合狠狠综合久久综合88 | 久久久久久久久久久久亚洲 | 免费成人午夜 | 精品国产视频 | 天天色影视综合 | 精品国产欧美 | 久久国产精品久久久久久 | 成人深夜小视频 | 亚洲精品久久久久久久久久吃药 | 在线观看国产视频 | 国产精品视频免费观看 | 亚洲精品电影网在线观看 | 日本精品一区二区三区四区 | 久久久综合色 | 欧美日韩国产精品一区二区 | 日一区二区 | 国产激情一区二区三区 | 69av在线视频 | 欧美成人精品 | 久久99精品国产99久久6男男 | 欧美黄色性生活视频 | 成人午夜高清 | 干干干操操操 | 成人一区二区三区 | 精区3d动漫一品二品精区 | 精品国产乱码一区二区三 | 免费看片在线播放 | 欧美中文字幕一区二区三区亚洲 | 国产精品一区二区三级 | 中文字幕一区二区三区在线视频 |