午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

打包一個(gè)Python庫(PyPa)

 云深無際 2021-11-19

其實(shí)今天量都夠了,但是還是想再補(bǔ)一篇:

本文的寫作環(huán)境,喜歡這種黑暗+昏暗的燈光

緣起~為什么會(huì)有這樣的一篇文章呢?因?yàn)槲易罱谧xPython的官方文檔,里面正好讀到了這里安裝Python模塊,然后我天天也在讀源碼,也在實(shí)踐中得到了一些佐證。所以記錄一下。

這一切是一個(gè)組織在維護(hù):

https://www.pypa.io/en/latest/

Python Packaging Authority (PyPA) 是一個(gè)工作組,負(fù)責(zé)維護(hù) Python 打包中使用的一組核心軟件項(xiàng)目。

這里我找一個(gè)庫作為說明:

https://github.com/3b1b/manim

使用這個(gè)

https://docs.manim.org.cn/

https://3b1b.github.io/manim/

然后解壓,看到這些,今天就說這些

這里是打印Python的版本

https://packaging.python.org/

關(guān)于我這篇文章的參考位置

py -m pip --version
pip 21.3.1 from C:\Users\yunswj\AppData\Local\Programs\Python\Python36\lib\site-packages\pip (python 3.6)

打印PIP的版本。

https://packaging.python.org/tutorials/packaging-projects/

看這個(gè)

https://pip.pypa.io/en/stable/

https://setuptools.pypa.io/en/latest/

py -m pip install --upgrade pip

pip的源文件樣子

packaging_tutorial/└── src/ └── example_package/ ├── __init__.py └── example.py

未來寫庫應(yīng)該寫的是這樣的

我們創(chuàng)建一個(gè)

pyproject.toml告訴構(gòu)建工具(如pip和build)構(gòu)建項(xiàng)目需要什么。

給出要構(gòu)建包的依賴包

我們的manim,這里也有寫法

配置元數(shù)據(jù)

有兩種類型的元數(shù)據(jù):靜態(tài)和動(dòng)態(tài)。

  • 靜態(tài)元數(shù)據(jù) ( setup.cfg):保證每次都相同。這更簡單、更易于閱讀,并避免了許多常見錯(cuò)誤,例如編碼錯(cuò)誤。

  • 動(dòng)態(tài)元數(shù)據(jù) ( setup.py):可能是不確定的。任何動(dòng)態(tài)的或在安裝時(shí)確定的項(xiàng)目,以及擴(kuò)展模塊或 setuptools 的擴(kuò)展,都需要進(jìn)入setup.py.

setup.cfg應(yīng)首選靜態(tài)元數(shù)據(jù) ( )。動(dòng)態(tài)元數(shù)據(jù) ( setup.py) 應(yīng)僅在絕對必要時(shí)用作逃生艙口。setup.py過去是必需的,但在較新版本的 setuptools 和 pip 中可以省略。

這個(gè)是demo的例子:

[metadata]name = example-pkg-YOUR-USERNAME-HEREversion = 0.0.1author = Example Authorauthor_email = author@example.comdescription = A small example packagelong_description = file: README.mdlong_description_content_type = text/markdownurl = https://github.com/pypa/sampleprojectproject_urls = Bug Tracker = https://github.com/pypa/sampleproject/issuesclassifiers = Programming Language :: Python :: 3 License :: OSI Approved :: MIT License Operating System :: OS Independent
[options]package_dir = = srcpackages = find:python_requires = >=3.6
[options.packages.find]where = src

setuptools的例子:

[metadata]name = my_packageversion = attr: src.VERSIONdescription = My package descriptionlong_description = file: README.rst, CHANGELOG.rst, LICENSE.rstkeywords = one, twolicense = BSD 3-Clause Licenseclassifiers = Framework :: Django License :: OSI Approved :: BSD License Programming Language :: Python :: 3 Programming Language :: Python :: 3.5
[options]zip_safe = Falseinclude_package_data = Truepackages = find:scripts = bin/first.py bin/second.pyinstall_requires = requests importlib; python_version == "2.6"
[options.package_data]* = *.txt, *.rsthello = *.msg
[options.entry_points]console_scripts = executable-name = package.module:function
[options.extras_require]pdf = ReportLab>=1.2; RXPrest = docutils>=0.3; pack ==1.1, ==1.3
[options.packages.find]exclude = src.subpackage1 src.subpackage2

相當(dāng)于教科書級別的寫法了

把我們的元文件復(fù)制進(jìn)來

https://setuptools.pypa.io/en/latest/userguide/declarative_config.html

這個(gè)是語法,是和win ini文件一樣的配置文件

支持的 INI 文件結(jié)構(gòu)

配置文件由部分組成,每個(gè)部分由一個(gè)[section]標(biāo)題引導(dǎo),后跟由特定字符串(=:默認(rèn)情況下為1分隔的鍵/值條目。默認(rèn)情況下,部分名稱區(qū)分大小寫,但鍵不是 1從鍵和值中刪除前導(dǎo)和尾隨空格。如果解析器配置為允許它1,則可以省略值,在這種情況下,鍵/值分隔符也可以省略。值也可以跨越多行,只要它們比值的第一行縮進(jìn)得更深。根據(jù)解析器的模式,空行可能被視為多行值的一部分或被忽略。

大概就是這樣的一個(gè)情況

https://pypa-build.readthedocs.io/en/stable/index.html

構(gòu)建工具的地址

執(zhí)行后報(bào)錯(cuò),我查了一下,應(yīng)該是在虛擬環(huán)境構(gòu)建

https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments

在這篇里面有論述

python.exe -m venv C:\Users\yunswj\Desktop\tf

但是我不會(huì)用

pip install virtualenv

先安裝這個(gè)工具

python3 -m venv .

在當(dāng)前環(huán)境建立一個(gè)虛擬環(huán)境

然后激活一下

新環(huán)境就兩個(gè)包

py -m pip install --upgrade build

安裝構(gòu)建工具

py -m build

我構(gòu)建失敗了

取消激活環(huán)境,刪除就行

https://zhuanlan.zhihu.com/p/42561895參考文章

在當(dāng)前目錄創(chuàng)建虛擬環(huán)境

$ python3 -m venv .

在當(dāng)前目錄創(chuàng)建獨(dú)立的python環(huán)境

$ virtualenv --no-site-packages venv

激活虛擬環(huán)境

$ source venv/bin/activate

停用虛擬環(huán)境

$ deactivate

刪除虛擬環(huán)境

$ rm -rf venv

操,一到動(dòng)手,一堆錯(cuò)誤,mb。。。你就當(dāng)我構(gòu)建成功了。

一般這樣的目錄就是一個(gè)不錯(cuò)的包

一個(gè)好的包一定少不了一個(gè)文檔,那下面就安裝一下

py -m pip install -U sphinx

安裝好以后

sphinx-quickstart

執(zhí)行這個(gè)

按照提示摁

構(gòu)建

就構(gòu)建出來了

https://docs.readthedocs.io/en/latest/intro/import-guide.html

這里有更多的細(xì)節(jié)

注意的是venv才是最新的構(gòu)建方式

如果你執(zhí)行的話,會(huì)有讓你選擇解釋器的選項(xiàng)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多