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

如何為L(zhǎng)inux打包Python應(yīng)用

系統(tǒng) Linux
在本文中,我將以構(gòu)建一個(gè)包含 HTTPie 工具的包為例來(lái)解釋如何使用它,以便在無(wú)需激活虛擬環(huán)境的情況下從命令行測(cè)試 HTTP API。

[[323514]]

了解如何使用 dh_virtualenv 來(lái)讓你的 Python 應(yīng)用可作為 .deb 包安裝。

在基于 Debian 的操作系統(tǒng)(例如 Debian 或 Elementary OS)上安裝 Python 應(yīng)用的一種方法是使用 dh_virtualenv 工具。它可以構(gòu)建一個(gè) .deb 包,在應(yīng)用之外封裝了一個(gè) Python 虛擬環(huán)境,并在安裝時(shí)進(jìn)行部署。

在本文中,我將以構(gòu)建一個(gè)包含 HTTPie 工具的包為例來(lái)解釋如何使用它,以便在無(wú)需激活虛擬環(huán)境的情況下從命令行測(cè)試 HTTP API。

使用 dh_virtualenv 打包

首先,你需要安裝 dh_virtualenv 所需的工具。dh_virtualenv文檔提供了所有安裝選項(xiàng)。在基于 Debian 的系統(tǒng)上,我輸入:

  1. apt-get install dh-virtualenv devscripts

盡管不需要 devscripts 包,但它可以簡(jiǎn)化后續(xù)操作。

現(xiàn)在,創(chuàng)建一個(gè)目錄來(lái)保存源碼。由于這是一個(gè)本地的、非官方的 HTTPie 打包,因此我將其稱(chēng)為 myhttp。接下來(lái),讓我們?cè)?myhttp 內(nèi)創(chuàng)建一些文件,向 Debian 構(gòu)建系統(tǒng)提供元數(shù)據(jù)。

首先,創(chuàng)建 debian/control 文件:

  1. Source: myhttp
  2. Section: python
  3. Priority: extra
  4. Maintainer: Jan Doe <jandoe@example.org>
  5. Build-Depends: debhelper (>= 9), python3.7, dh-virtualenv (>= 0.8)
  6. Standards-Version: 3.9.5
  7.  
  8. Package: myhttp
  9. Architecture: any
  10. Pre-Depends: dpkg (>= 1.16.1), python3.7, ${misc:Pre-Depends}
  11. Depends: ${misc:Depends}
  12. Description: http client
  13. Useful for doing stuff

那么這些是什么信息呢?正如 Debian 文檔指出的:

“第 1–7 行是源碼包的控制信息。第 9–13 行是二進(jìn)制包的控制信息。”

以下是我使用的:

  • Section 的值對(duì)于我們來(lái)說(shuō)大多沒(méi)有意義,但需要存在。它對(duì)給引導(dǎo)式 UI 安裝程序提供信息是有意義的,但對(duì)于這個(gè)包來(lái)說(shuō),沒(méi)有意義。
  • Priority 對(duì)像這樣的第三方包的正確值是 extra
  • 強(qiáng)烈建議在 Maintainer 字段中填寫(xiě)正確的聯(lián)系人信息。但不一定非得是你的個(gè)人電子郵件,如果包由團(tuán)隊(duì)維護(hù),并且你希望將問(wèn)題發(fā)送到團(tuán)隊(duì)的郵件別名,例如 Infrastructure Team <infra-team-list@company.example.com>
  • Build-Depends 字段標(biāo)識(shí)你需要 debhelperpythondh-virtualenv 來(lái)構(gòu)建包:包構(gòu)建過(guò)程中將確保這些依賴(lài)項(xiàng)在包構(gòu)建時(shí)已安裝。
  • Standards-Version 字段主要給人看。它表明你遵循的指南。本指南基于 dh-virtualenv 的官方文檔,它是基于 Debian 的 3.9.5 指南。最好一直將源碼包和二進(jìn)制包命名相同。
  • Architecture 字段應(yīng)為 Any,因?yàn)槌翘摂M環(huán)境可能包含一些特定于體系結(jié)構(gòu)的文件。否則,最好選擇該字段為 any
  • 保持 Pre-Depends 列表不變:它是一種非常嚴(yán)格的依賴(lài)關(guān)系形式,你很少會(huì)需要比這里建議的最小依賴(lài)更多的依賴(lài)項(xiàng)。依賴(lài)項(xiàng)通常由構(gòu)建系統(tǒng)準(zhǔn)確計(jì)算,因此沒(méi)有理由手動(dòng)指定它們。
  • 如果你的包主要用于內(nèi)部,那么 Description 字段可能只需要最少的信息或者指向公司 wiki 的鏈接,不然更多的信息會(huì)更有用。

然后創(chuàng)建 debian/compat 文件,它主要出于歷史目的而存在

  1. $ echo "9" > debian/compat

接下來(lái),創(chuàng)建更新日志以告知包用戶(hù)自上次發(fā)布以來(lái)發(fā)生了什么變化。最簡(jiǎn)單的方法是使用 dch --create 創(chuàng)建模板,然后填寫(xiě)值。

填寫(xiě)后,它看起來(lái)像:

  1. myhttp (2.0.0-1) stable; urgency=medium
  2.  
  3. * Initial release.
  4.  
  5. -- Jan Doe <jandoe@example.org> Fri, 27 Mar 2020 01:09:22 +0000

現(xiàn)在你需要告訴工具安裝 HTTPie,但是哪個(gè)版本?

創(chuàng)建一個(gè)寬松版本的 requirements.in 文件:

  1. httpie

通常,寬松的需求文件將僅包含項(xiàng)目的直接依賴(lài)項(xiàng),并在需要時(shí)指定最低版本。不一定總是需要指定最低版本:這些工具通常偏向于將依賴(lài)關(guān)系轉(zhuǎn)化為“可能的最新版本”。如果你的 Debian 包與一個(gè)內(nèi)部 Python 包相對(duì)應(yīng),這是內(nèi)部應(yīng)用中的一種常見(jiàn)情況,那么寬松的需求文件看起來(lái)將很相似:僅包含包名的一行。

然后使用 pip-compile(可通過(guò)安裝 PyPI 包 pip-tools 獲得):

  1. $ pip-compile requirements.in > requirements.txt

這會(huì)生成一個(gè)嚴(yán)格的依賴(lài)文件,名為 requirements.txt

  1. #
  2. # This file is autogenerated by pip-compile
  3. # To update, run:
  4. #
  5. # pip-compile requirements.in
  6. #
  7. certifi==2019.11.28 # via requests
  8. chardet==3.0.4 # via requests
  9. httpie==2.0.0 # via -r requirements.in
  10. idna==2.9 # via requests
  11. pygments==2.6.1 # via httpie
  12. requests==2.23.0 # via httpie
  13. urllib3==1.25.8 # via requests

最后,寫(xiě)一個(gè) debian/rules 文件來(lái)創(chuàng)建包。因?yàn)?dh_virtualenv 會(huì)處理所有困難的事,因此規(guī)則文件很簡(jiǎn)單:

  1. #!/usr/bin/make -f
  2.  
  3. %:
  4. dh $@ --with python-virtualenv --python /usr/bin/python3.7

確保指定 Python 解釋器。默認(rèn)它會(huì)使用 /usr/bin/python,這是 Python2,但是你應(yīng)該使用一個(gè)受支持的 Python 版本

完成了,接下來(lái)就是構(gòu)建包:

  1. $ debuild -b -us -uc

這會(huì)在父目錄生成一個(gè)類(lèi)似 myhttp_2.0.0-1_amd64.deb 的文件。該文件可在任何兼容的系統(tǒng)上安裝。

通常,最好在同一平臺(tái)上構(gòu)建用于特定平臺(tái)(例如 Debian 10.0)的 Debian 包。

你可以將此 Debian 包保存在軟件倉(cāng)庫(kù)中,并使用例如 Ansible 的工具將其安裝在所有相關(guān)系統(tǒng)上。

總結(jié)

給基于 Debian 的系統(tǒng)的打包應(yīng)用是一個(gè)有著多個(gè)步驟的過(guò)程。使用 dh_virtualenv 將使過(guò)程變得簡(jiǎn)單明了。 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2015-09-16 17:30:20

安裝Go語(yǔ)言Linux

2019-12-20 13:50:11

LinuxOpenbox

2023-12-26 10:04:29

Electron應(yīng)用開(kāi)發(fā)框架

2018-11-26 10:40:28

Linux打印機(jī)命令

2013-04-01 09:35:30

移動(dòng)云應(yīng)用BYOD云模型

2013-05-27 10:01:06

Android開(kāi)發(fā)Android應(yīng)用縮放圖片

2011-02-22 14:42:52

AndroidPad

2017-10-11 09:15:07

Windows 應(yīng)用

2011-11-09 10:50:52

2009-06-17 14:09:23

配置java home

2017-12-30 09:45:50

Linux發(fā)行版面向孩子

2016-01-12 14:54:58

UbuntuLinuxKernel 4.4

2015-09-15 15:51:09

OpenOfficeLinux MintUbuntu

2009-12-10 16:26:49

GNULinux

2014-02-10 09:00:19

混合云公有云應(yīng)用模型

2012-06-06 09:34:43

ASO技巧為應(yīng)用撰寫(xiě)描述

2012-01-04 10:45:01

2012-05-16 11:30:39

2015-06-23 09:25:50

2017-09-28 16:18:55

語(yǔ)言PythonGo
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产一区二区三区免费观看视频 | 久久久青草婷婷精品综合日韩 | 妞干网视频 | 亚洲h色| 国产伦精品一区二区三区在线 | 亚洲欧美激情网 | 亚洲精品小视频在线观看 | 日韩精品一区二区三区在线观看 | 福利社午夜影院 | 亚洲午夜久久久 | 91精品麻豆日日躁夜夜躁 | 日韩a v在线免费观看 | 国产精品久久 | 孰女乱色一区二区三区 | 日韩成人免费 | 久久综合一区 | 亚洲 欧美 日韩在线 | 成人国产精品入口免费视频 | 91 在线| 黄色免费在线观看网站 | 人人干免费| 亚洲视频免费 | 91久久久久久 | 国产区精品 | 午夜电影一区二区 | 美女黄18岁以下禁止观看 | 在线观看亚洲专区 | 亚洲一区二区三 | 久久久久久久电影 | 欧美日韩精品久久久免费观看 | 99草免费视频 | 亚洲一区二区三区四区五区午夜 | 高清免费在线 | 五月婷婷丁香婷婷 | 91精品国产综合久久久动漫日韩 | 国产精品地址 | 日韩精品在线一区二区 | 亚洲日韩中文字幕一区 | 成人免费在线视频 | 美女久久视频 | 亚洲综合免费 |