国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
為使用上面的建置過(guò)程,需要安裝對(duì)應(yīng)的包,如 tox, wheel, coverage, sphinx, flake8, 它們都可以透過(guò) ?pip 來(lái)安裝。之後就可以 make test, make coverage, make docs,make dist 等。其中 make docs 可以產(chǎn)生一個(gè)很漂亮的 Web 文件。
在我體驗(yàn)tox 指令過(guò)程中,每一步好像都比較慢,應(yīng)該是建立虛擬機(jī)器要花些時(shí)間。
隨後在執(zhí)行 pyb 建立虛擬環(huán)境時(shí)就會(huì)安裝上面的依賴,並在其中執(zhí)行測(cè)試與建置。
首頁(yè) 後端開(kāi)發(fā) Python教學(xué) 四個(gè)Python專案管理與建構(gòu)工具,建議收藏!

四個(gè)Python專案管理與建構(gòu)工具,建議收藏!

Apr 12, 2023 pm 10:52 PM
python 專案管理 建構(gòu)工具

四個(gè)Python專案管理與建構(gòu)工具,建議收藏!

Python 歷時(shí)這麼久以來(lái)至今還未有一個(gè)事實(shí)上標(biāo)準(zhǔn)的專案管理及建構(gòu)工具,以至於造成 Python 專案的結(jié)構(gòu)與建構(gòu)方式五花八門(mén)。這或許是體現(xiàn)了 Python 的自由意志。

不像 Java 在經(jīng)歷了最初的手工構(gòu)建,到半自動(dòng)化的 Ant, 再到 Maven 基本上就是事實(shí)上的標(biāo)準(zhǔn)了。其間Maven 也接受了其他的Gradle(Android 專案主推), SBT(主要是Scala 專案), Ant Ivy, Buildr 等的挑戰(zhàn),但都很難撼動(dòng)Maven 的江湖地位,而且其他的差不多遵循了Maven 的目錄佈局。

回到 Python,產(chǎn)生過(guò) pip, pipenv, conda 那樣的套件管理工具,但對(duì)專案的目錄佈局沒(méi)有任何約定。

關(guān)於建構(gòu)很多還是延續(xù)了傳統(tǒng)的 Makefile 的方式,再就是加上 setup.py 和 build.py 用程式碼來(lái)進(jìn)行安裝與建置。關(guān)於專案目錄佈局,有做成專案範(fàn)本的,然後做成工具應(yīng)用專案範(fàn)本。

下面大概瀏覽一下四個(gè)工具的使用

  1. ?CookieCutter
  2. ?PyScaffold
  3. # PyBuilder
  4. ?Poetry

CookieCutter 一個(gè)經(jīng)典的Python 專案目錄結(jié)構(gòu)

##CookieCutter 一個(gè)經(jīng)典的Python 專案目錄結(jié)構(gòu)

$ pip install cookiecutter
$ cookiecutter gh:audreyr/cookiecutter-pypackage
# 以 github 上的 audreyr/cookiecutter-pypackage 為模板,再回答一堆的問(wèn)題生成一個(gè) Python 項(xiàng)目
......
project_name [Python Boilerplate]: sample
......

最後由cookiecutter 產(chǎn)生的專案範(fàn)本是下面的樣子:

$ tree sample
sample
├── AUTHORS.rst
├── CONTRIBUTING.rst
├── HISTORY.rst
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── docs
│ ├── Makefile
│ ├── authors.rst
│ ├── conf.py
│ ├── contributing.rst
│ ├── history.rst
│ ├── index.rst
│ ├── installation.rst
│ ├── make.bat
│ ├── readme.rst
│ └── usage.rst
├── requirements_dev.txt
├── sample
│ ├── __init__.py
│ ├── cli.py
│ └── sample.py
├── setup.cfg
├── setup.py
├── tests
│ ├── __init__.py
│ └── test_sample.py
└── tox.ini
3 directories, 26 files

這大概是當(dāng)前比較流行的目錄結(jié)構(gòu)的主體框架,主要元素是:

$ tree sample
sample
├── Makefile
├── README.rst
├── docs
│ └── index.rst
├── requirements.txt
├── sample
│ ├── __init__.py
│ └── sample.py
├── setup.cfg
├── setup.py
└── tests
 ├── __init__.py
 └── test_sample.py

項(xiàng)目sample 目錄中重複sample 目錄中放置Python 源文件,tests 目錄中是測(cè)試文件,再加一個(gè)docs 目錄放文檔,README.rst, 其他的用於構(gòu)建的setup, setup.cfg 和Makefile 文件。


這其實(shí)是一個(gè)很經(jīng)典的 Python 專案結(jié)構(gòu),接下來(lái)的建置就用 make 指令了,輸入 make 會(huì)看到定義在 Makefile 檔案中的指令。

$ make
cleanremove all build, test, coverage and Python artifacts
clean-buildremove build artifacts
clean-pycremove Python file artifacts
clean-test remove test and coverage artifacts
lint check style
test run tests quickly with the default Python
test-all run tests on every Python version with tox
coverage check code coverage quickly with the default Python
docs generate Sphinx HTML documentation, including API docs
servedocscompile the docs watching for changes
releasepackage and upload a release
dist builds source and wheel package
installinstall the package to the active Python's site-packages

為使用上面的建置過(guò)程,需要安裝對(duì)應(yīng)的包,如 tox, wheel, coverage, sphinx, flake8, 它們都可以透過(guò) ?pip 來(lái)安裝。之後就可以 make test, make coverage, make docs,make dist 等。其中 make docs 可以產(chǎn)生一個(gè)很漂亮的 Web 文件。

PyScaffold 創(chuàng)建一個(gè)專案

PyScaffold 顧名思義,它是一個(gè)用來(lái)創(chuàng)建Python 專案腳手架的工具,安裝和使用:

$ pip install pyscaffold
$ putup sample

這樣創(chuàng)建了一個(gè)Python 項(xiàng)目,目錄結(jié)構(gòu)與前面?cookiecutter 所選的模板差不多,只不過(guò)它把源文件放在了src 目錄,而非sample 目錄。

$ tree sample
sample
├── AUTHORS.rst
├── CHANGELOG.rst
├── CONTRIBUTING.rst
├── LICENSE.txt
├── README.rst
├── docs
│ ├── Makefile
│ ├── _static
│ ├── authors.rst
│ ├── changelog.rst
│ ├── conf.py
│ ├── contributing.rst
│ ├── index.rst
│ ├── license.rst
│ ├── readme.rst
│ └── requirements.txt
├── pyproject.toml
├── setup.cfg
├── setup.py
├── src
│ └── sample
│ ├── __init__.py
│ └── skeleton.py
├── tests
│ ├── conftest.py
│ └── test_skeleton.py
└── tox.ini

整個(gè)專案的建置就要用 tox 這個(gè)工具了。 tox 是一個(gè)自動(dòng)化測(cè)試和建置工具,它在建置過(guò)程中可建立 Python 虛擬環(huán)境,這讓測(cè)試和建置能有一個(gè)乾淨(jìng)的環(huán)境。


tox -av 能顯示定義在tox.ini 中所有的任務(wù):

$ tox -av
default environments:
default -> Invoke pytest to run automated tests
additional environments:
build -> Build the package in isolation according to PEP517, see https://github.com/pypa/build
clean -> Remove old distribution files and temporary build artifacts (./build and ./dist)
docs-> Invoke sphinx-build to build the docs
doctests-> Invoke sphinx-build to run doctests
linkcheck -> Check for broken links in the documentation
publish -> Publish the package you have been developing to a package index server. By default, it uses testpypi. If you really want to publish your package to be publicly accessible in PyPI, use the `-- --repository pypi` option.

要執(zhí)行哪個(gè)指令便用tox -e build, tox -e docs 等

在我體驗(yàn)tox 指令過(guò)程中,每一步好像都比較慢,應(yīng)該是建立虛擬機(jī)器要花些時(shí)間。

PyBuilder

最好再看另一個(gè)建置工具PyBuilder, 它所建立的目錄結(jié)構(gòu)很接近Maven, 下面來(lái)瞧瞧

$ pip install pybuilder
$ mkdir sample && cd sample# 項(xiàng)目目錄需手工創(chuàng)建
$ pyb --start-project# 回答一些問(wèn)題后創(chuàng)建所需的目錄和文件

完後看下它的目錄結(jié)構(gòu):

$ tree sample
.
├── build.py
├── docs
├── pyproject.toml
├── setup.py
└── src
 ├── main
 │ ├── python
 │ └── scripts
 └── unittest
 └── python

構(gòu)建過(guò)程仍然是用pyb 命令,可用pyb -h 查看幫助,pyb -t 列出所有的任務(wù), PyBuilder 的任務(wù)是以插件的方式加入的,插件配置在?build.py 檔案中。

$ pyb -t sample
Tasks found for project "sample":
 analyze -Execute analysis plugins.
 depends on tasks: prepare run_unit_tests
 clean - Cleans the generated output.
 compile_sources - Compiles source files that need compilation.
 depends on tasks: prepare
coverage - <no description available>
 depends on tasks: verify
 install - Installs the published project.
 depends on tasks: package publish(optional)
 package - Packages the application. Package a python application.
 depends on tasks: compile_sources run_unit_tests(optional)
 prepare - Prepares the project for building. Creates target VEnvs
 print_module_path - Print the module path.
print_scripts_path - Print the script path.
 publish - Publishes the project.
 depends on tasks: package verify(optional) coverage(optional)
 run_integration_tests - Runs integration tests on the packaged application.
 depends on tasks: package
run_unit_tests - Runs all unit tests. Runs unit tests based on Python's unittest module
 depends on tasks: compile_sources
upload - Upload a project to PyPi.
verify - Verifies the project and possibly integration tests.
 depends on tasks: run_integration_tests(optional)
$ pyb run_unit_tests sample

PyBuilder 也是在建置或測(cè)試之前建立虛擬環(huán)境, 從 0.12.9 版開(kāi)始可透過(guò)參數(shù) --no-venvs 跳過(guò)建立虛擬環(huán)境這一步驟。使用了 --no-venvs 的話 Python 程式碼將會(huì)在執(zhí)行 ?pyb 的目前 Python 環(huán)境中執(zhí)行,所需的依賴將要手動(dòng)安裝。


專案的依賴也定義在 build.py 檔案中。

@init
def set_properties(project):
 project.depends_on('boto3', '>=1.18.52')
 project.build_depends_on('mock')

隨後在執(zhí)行 pyb 建立虛擬環(huán)境時(shí)就會(huì)安裝上面的依賴,並在其中執(zhí)行測(cè)試與建置。

Poetry

最後一個(gè)Poetry, 感覺(jué)這是一個(gè)更成熟,專案活躍度也更高的Python 構(gòu)建,它有著更強(qiáng)大的信賴管理功能,用poetry add boto3 就能加入依賴,poetry show --tree 顯示出依賴樹(shù)。看如何安裝及建立一個(gè)專案

$ pip install poetry
$ poetry new sample

它所建立的專案比上面都簡(jiǎn)單

$ tree sample
sample
├── README.rst
├── pyproject.toml
├── sample
│ └── __init__.py
└── tests
 ├── __init__.py
 └── test_sample.py

如果給poetry new 帶上--src 參數(shù),那麼原始檔目錄sample 就會(huì)放在src目錄下,即sample/src/sample.

poetry init 會(huì)在目前目錄中產(chǎn)生pyproject.toml 文件,目錄等的產(chǎn)生需手動(dòng)完成。

它不關(guān)注文件的生成,程式碼規(guī)格的檢查,程式碼覆蓋率都沒(méi)有。它的專案配置更集中,全部在 pyproject.toml 檔案中,toml 是什麼呢?它是一種設(shè)定檔的格式Tom's Obvious, Minimal Language (https://github.com/toml-lang/toml).

###pyproject.toml 有些類似NodeJS 的package.json 文件,例如poetry add, poetry install 指令的行#######
# 往 pyproject.toml 中添加對(duì)boto3 的依賴并安裝(add 還能從本地或 git 來(lái)安裝依賴 ),
poetry add boto3
# 將依照 pyproject.toml 文件中定義安裝相應(yīng)的依賴到當(dāng)前的 Python 虛擬環(huán)境中
# 比如在 <test-venv>/lib/python3.9/site-packages 目錄中,安裝好模塊后也可讓測(cè)試用例使用
poetry install

其他主要的

1.poetry build# 構(gòu)建可安裝的 *.whl 和 tar.gz 文件
2.poetry shell# 會(huì)根據(jù)定義在 pyproject.toml 文件中的依賴創(chuàng)建并使用虛擬環(huán)境
3.poetry run pytest# 運(yùn)行使用 pytest 的測(cè)試用例,如 tests/test_sample.py
4.poetry run python -m unittest tests/sample_tests.py# 運(yùn)行 unittest 測(cè)試用例
5.poetry export --without-hashes --output requirements.txt# 導(dǎo)出 requirements.txt 文件, --dev導(dǎo)出含 dev 的依賴,或者用 poetry export --without-hashes > requirements.txt

poetry run 能執(zhí)行任何系統(tǒng)命令,只是它會(huì)在它要的虛擬環(huán)境中執(zhí)行。所以可以想見(jiàn),poetry 的項(xiàng)目要生成文檔或覆蓋率都必須用 poetry run ... 命令來(lái)支持 sphinx, coverage 或 flake8。

在 sample 目錄(與 pyproject.toml 文件平級(jí))中創(chuàng)建文件 my_module.py, 內(nèi)容為

def main():
 print('hello poetry')

然后在 pyproject.toml 中寫(xiě)上。

[tool.poetry.scripts]
my-script="sample.my_module:main"

再執(zhí)行

$ poetry run my-script

就會(huì)輸出 "hello poetry"。

通過(guò)對(duì)以上四個(gè)工具的認(rèn)識(shí),項(xiàng)目結(jié)構(gòu)的復(fù)雜度由 cookiecutter-pyproject -> PyScaffold -> PyBuilder -> Poetry 依次降低,使用的難度大略也是相同的順序

以上是四個(gè)Python專案管理與建構(gòu)工具,建議收藏!的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

Laravel 教程
1600
29
PHP教程
1502
276
PHP調(diào)用AI智能語(yǔ)音助手 PHP語(yǔ)音交互系統(tǒng)搭建 PHP調(diào)用AI智能語(yǔ)音助手 PHP語(yǔ)音交互系統(tǒng)搭建 Jul 25, 2025 pm 08:45 PM

用戶語(yǔ)音輸入通過(guò)前端JavaScript的MediaRecorderAPI捕獲並發(fā)送至PHP後端;2.PHP將音頻保存為臨時(shí)文件後調(diào)用STTAPI(如Google或百度語(yǔ)音識(shí)別)轉(zhuǎn)換為文本;3.PHP將文本發(fā)送至AI服務(wù)(如OpenAIGPT)獲取智能回復(fù);4.PHP再調(diào)用TTSAPI(如百度或Google語(yǔ)音合成)將回復(fù)轉(zhuǎn)為語(yǔ)音文件;5.PHP將語(yǔ)音文件流式返回前端播放,完成交互。整個(gè)流程由PHP主導(dǎo)數(shù)據(jù)流轉(zhuǎn)與錯(cuò)誤處理,確保各環(huán)節(jié)無(wú)縫銜接。

如何用PHP結(jié)合AI實(shí)現(xiàn)文本糾錯(cuò) PHP語(yǔ)法檢測(cè)與優(yōu)化 如何用PHP結(jié)合AI實(shí)現(xiàn)文本糾錯(cuò) PHP語(yǔ)法檢測(cè)與優(yōu)化 Jul 25, 2025 pm 08:57 PM

要實(shí)現(xiàn)PHP結(jié)合AI進(jìn)行文本糾錯(cuò)與語(yǔ)法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開(kāi)源NLP庫(kù);2.通過(guò)PHP的curl或Guzzle調(diào)用API並處理返回結(jié)果;3.在應(yīng)用中展示糾錯(cuò)信息並允許用戶選擇是否採(cǎi)納;4.使用php-l和PHP_CodeSniffer進(jìn)行語(yǔ)法檢測(cè)與代碼優(yōu)化;5.持續(xù)收集反饋並更新模型或規(guī)則以提升效果。選擇AIAPI時(shí)應(yīng)重點(diǎn)評(píng)估準(zhǔn)確率、響應(yīng)速度、價(jià)格及對(duì)PHP的支持。代碼優(yōu)化應(yīng)遵循PSR規(guī)範(fàn)、合理使用緩存、避免循環(huán)查詢、定期審查代碼,並藉助X

python seaborn關(guān)節(jié)圖示例 python seaborn關(guān)節(jié)圖示例 Jul 26, 2025 am 08:11 AM

使用Seaborn的jointplot可快速可視化兩個(gè)變量間的關(guān)係及各自分佈;2.基礎(chǔ)散點(diǎn)圖通過(guò)sns.jointplot(data=tips,x="total_bill",y="tip",kind="scatter")實(shí)現(xiàn),中心為散點(diǎn)圖,上下和右側(cè)顯示直方圖;3.添加回歸線和密度信息可用kind="reg",並結(jié)合marginal_kws設(shè)置邊緣圖樣式;4.數(shù)據(jù)量大時(shí)推薦kind="hex",用

PHP集成AI情感計(jì)算技術(shù) PHP用戶反饋智能分析 PHP集成AI情感計(jì)算技術(shù) PHP用戶反饋智能分析 Jul 25, 2025 pm 06:54 PM

要將AI情感計(jì)算技術(shù)融入PHP應(yīng)用,核心是利用雲(yún)服務(wù)AIAPI(如Google、AWS、Azure)進(jìn)行情感分析,通過(guò)HTTP請(qǐng)求發(fā)送文本並解析返回的JSON結(jié)果,將情感數(shù)據(jù)存入數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)用戶反饋的自動(dòng)化處理與數(shù)據(jù)洞察。具體步驟包括:1.選擇適合的AI情感分析API,綜合考慮準(zhǔn)確性、成本、語(yǔ)言支持和集成複雜度;2.使用Guzzle或curl發(fā)送請(qǐng)求,存儲(chǔ)情感分?jǐn)?shù)、標(biāo)籤及強(qiáng)度等信息;3.構(gòu)建可視化儀錶盤(pán),支持優(yōu)先級(jí)排序、趨勢(shì)分析、產(chǎn)品迭代方向和用戶細(xì)分;4.應(yīng)對(duì)技術(shù)挑戰(zhàn),如API調(diào)用限制、數(shù)

python列表到字符串轉(zhuǎn)換示例 python列表到字符串轉(zhuǎn)換示例 Jul 26, 2025 am 08:00 AM

字符串列表可用join()方法合併,如''.join(words)得到"HelloworldfromPython";2.數(shù)字列表需先用map(str,numbers)或[str(x)forxinnumbers]轉(zhuǎn)為字符串後才能join;3.任意類型列表可直接用str()轉(zhuǎn)換為帶括號(hào)和引號(hào)的字符串,適用於調(diào)試;4.自定義格式可用生成器表達(dá)式結(jié)合join()實(shí)現(xiàn),如'|'.join(f"[{item}]"foriteminitems)輸出"[a]|[

python pandas融化示例 python pandas融化示例 Jul 27, 2025 am 02:48 AM

pandas.melt()用於將寬格式數(shù)據(jù)轉(zhuǎn)為長(zhǎng)格式,答案是通過(guò)指定id_vars保留標(biāo)識(shí)列、value_vars選擇需融化的列、var_name和value_name定義新列名,1.id_vars='Name'表示Name列不變,2.value_vars=['Math','English','Science']指定要融化的列,3.var_name='Subject'設(shè)置原列名的新列名,4.value_name='Score'設(shè)置原值的新列名,最終生成包含Name、Subject和Score三列

優(yōu)化用於內(nèi)存操作的Python 優(yōu)化用於內(nèi)存操作的Python Jul 28, 2025 am 03:22 AM

pythoncanbeoptimizedFormized-formemory-boundoperationsbyreducingOverHeadThroughGenerator,有效dattratsures,andManagingObjectLifetimes.first,useGeneratorSInsteadoFlistSteadoflistSteadoFocessLargedAtasetSoneItematatime,desceedingingLoadeGingloadInterveringerverneDraineNterveingerverneDraineNterveInterveIntMory.second.second.second.second,Choos,Choos

Python連接到SQL Server PYODBC示例 Python連接到SQL Server PYODBC示例 Jul 30, 2025 am 02:53 AM

安裝pyodbc:使用pipinstallpyodbc命令安裝庫(kù);2.連接SQLServer:通過(guò)pyodbc.connect()方法,使用包含DRIVER、SERVER、DATABASE、UID/PWD或Trusted_Connection的連接字符串,分別支持SQL身份驗(yàn)證或Windows身份驗(yàn)證;3.查看已安裝驅(qū)動(dòng):運(yùn)行pyodbc.drivers()並篩選含'SQLServer'的驅(qū)動(dòng)名,確保使用如'ODBCDriver17forSQLServer'等正確驅(qū)動(dòng)名稱;4.連接字符串關(guān)鍵參數(shù)

See all articles