用Setuptools構建和分發程式包

2022-08-22 23:54:09 字數 4713 閱讀 5598

目錄參考官方文件翻譯

安裝最新版本的setuptools:

python3 -m pip install --upgrade setuptools
引入setuptools基本使用

from setuptools import setup, find_packages

setup(

name="helloworld",

version="0.1",

packages=find_packages(),

)

要生成源**分發,只需呼叫:

setup.py sdist
隨著專案的增大將會包括一些依賴項,以及一些資料檔案和指令碼:

from setuptools import setup, find_packages

setup(

name="helloworld",

version="0.1",

packages=find_packages(),

scripts=["say_hello.py"],

# project uses restructuredtext, so ensure that the docutils get

# installed or upgraded on the target machine

install_requires=["docutils>=0.3"],

package_data=,

# metadata to display on pypi

author="me",

author_email="[email protected]",

description="this is an example package",

keywords="hello world example examples",

url="", # project home page, if any

project_urls=,

classifiers=[

]# could also include long_description, download_url, etc.

)

下面我們將解釋大多數這些setup() 引數的作用(元資料除外),以及在您自己的專案中使用它們的各種方式

官方的劃分比較多,簡潔的說一下:

版本:發行號+標籤(交替出現)

發行號:2.1.0 (簡單理解格式)

標籤:類似alpha,beta, a,c,dev等,例如:乙個不穩定的預發行版本,建議:2.1.0.a9,如果需要加入日期建議使用-,例如:2.1.0.9-20190604

可以使用該pkg_resources.parse_version()功能比較不同的版本號:

>>> from pkg_resources import parse_version

>>> parse_version("1.9.a.dev") == parse_version("1.9a0dev")

true

>>> parse_version("2.1-rc2") < parse_version("2.1")

true

>>> parse_version("0.6a9dev-r41475") < parse_version("0.6a9")

true

include_package_data:如果設定為true,setuptools則表示將在manifest.in檔案指定的包目錄中自動包含找到的所有資料檔案。

exclude_package_data:將包名稱對映到應該從包目錄中排除的全域性模式列表的字典

package_data:字典將包名稱對映到全域性模式列表。

zip_safe:乙個布林值(true或false)標誌,指定是否可以安全地安裝該專案並從zip檔案執行該專案。如果未提供此引數,則bdist_egg每次構建雞蛋時,該命令將必須分析專案的所有內容以查詢可能的問題。

install_requires:乙個字串或字串列表,指定在安裝此版本時還需要安裝其他發行版。

entry_points:字典將入口點組名稱對映到定義入口點的字串或字串列表。

extras_require:字典將名稱「 extras」(專案的可選功能)對映到字串或字串列表的字典,用於指定必須安裝哪些其他發行版來支援這些功能。

python_requires:python版本設定。

版本號大於等於3.3,但是不能超過4

python_requires='~=3.3',

支援2.6 2.7以及所有以3.3開頭的python 3版本

python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4',

setup_requires:安裝指令碼執行時需要依賴的分發包,主要用於構建過程,注意,這裡列出的包不會自動安裝,如果需要,同時要在install_requires中指定。

dependency_links:滿足依賴性時要搜尋的url的字串列表

namespace_packages:命名專案的「命名空間包」的字串列表

對包含的檔案進行更細粒度的控制(例如,如果您的軟體包目錄中有文件檔案,並希望將其排除在安裝範圍之外),則還可以使用package_data關鍵字

setup.py

src/

mypkg/

__init__.py

mypkg.txt

data/

somefile.dat

otherdata.dat

from setuptools import setup, find_packages

setup(

...packages=find_packages("src"), # include all packages under src

package_dir=, # tell distutils packages are under src

package_data=

)

如果想去掉readm.md等檔案:

from setuptools import setup, find_packages

setup(

...packages=find_packages("src"), # include all packages under src

package_dir=, # tell distutils packages are under src

include_package_data=true, # include everything in source control

# ...but exclude readme.txt from all packages

exclude_package_data=,

)

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from setuptools import setup, find_packages

"""setuptools使用文件:

生成原始碼發布包, 在靈犀工程目錄(lingxi/)下執行: python3 setup.py sdist

"""setup(

name="lingxi",

version="1.5.0", # 發布前注意將此處改為本次發布的版本號

packages=find_packages(),

# project uses restructuredtext, so ensure that the docutils get

# installed or upgraded on the target machine

# install_requires=['docutils>=0.3'],

package_data=,

# metadata to display on pypi

author="",

author_email="",

maintainer="",

maintainer_email="@kilox.cn",

description="分析系統",

keywords="",

url="",

license="gplv3",

platforms="unix",

long_description="readme.md, changelog.md, license",

install_requires=['opencv-python', 'numpy', 'pillow', 'six', 'torch', 'pytz', 'waitress', 'wtforms', 'flask',

'torchvision', 'termcolor', 'scipy', 'matplotlib', 'imageio', 'requests', 'soundfile', 'librosa',

'face_recognition', 'scikit-image', 'imutils', 'tensorflow', 'mmcv', 'pycocotools', 'tabulate',

'psutil', 'py-cpuinfo', 'pyyaml', 'fvcore']

)

vue獨立構建和執行構建

概念 有兩種構建方式,獨立構建和執行構建。它們的區別在於前者包含模板編譯器而後者不包含。模板編譯器 模板編譯器的職責是將模板字串編譯為純 j ascript 的渲染函式。如果你想要在元件中使用template選項,你就需要編譯器。模板字串 template el 提供乙個在頁面上已存在的 dom 元...

vue element admin專案構建和發布

如果你的資料不是模擬的,則需要將 src main.js中的以下 注釋掉 import from mock if process.env.node env production 將以上 注釋掉 然後對根目錄中名為.env.production的配置檔案做以下修改 base api prod api ...

效能測試 測試模型構建和場景用例設計

確定測試需求及對應指標後,測試工程師可針對被測試業務分析其業務模型,便於測試場景及指令碼的設計 登陸業務操作過程 開啟首頁 輸入使用者名稱及密碼,登陸 退出系統 商品瀏覽購買操作過程 開啟首頁 輸入使用者名稱及密碼,登陸 隨機選擇商品購買 設定收貨位址 設定物流方式及付款方式,提交訂單 退出系統 場...