首頁 >後端開發 >Python教學 >如何在 inutes 中建立自己的 Python 項目

如何在 inutes 中建立自己的 Python 項目

Barbara Streisand
Barbara Streisand原創
2024-12-29 08:58:10990瀏覽

為什麼選擇Python套件?

Python支援所有類型的執行;您可以直接在 shell 中運行 Python 程式碼,或將程式碼放入檔案中並稍後運行。

有時候開始一個新的Python專案是非常困難的;寫劇本?寫一個模組?寫個包嗎?

最好的選擇是微片模式:編寫一個腳本,然後在模組中重寫它,然後在套件中重寫。

這種模式可以讓您不必每天重新發明輪子,並且可以在將來重複使用程式碼。

Python包結構

Python 套件具有以下結構:

pkg
├── __init__.py
├── module1.py
└── subpkg
    ├── __init__.py
    ├── __main__.py
    └── module2.py

資料夾pkg是一個包,因為包含__init__.py模組。 subpkg 資料夾也是一個包;是pkg的子包。
module1.py 和 module2.py 是其套件的模組。
__main__.py 模組允許執行套件。

只有這裡嗎?其他的事情?

如果你要成為 Python 開發人員,那麼你會使用其他常用工具。

依照順序,您所寫的每一段程式碼都遵循以下步驟:

  1. 將Python程式碼寫入你的套件
  2. 追蹤您的修改
  3. 測試您所寫的所有程式碼
  4. 將您的程式碼放入您測試的環境中
  5. 將程式碼推送到遠端儲存庫
  6. 建立您的分送包
  7. 將你的包上傳到 PyPi

管道

程式碼中的每一個變更都可能會引入可能的錯誤。為了放棄這個,每次我們需要在正確的環境中測試自己的包時。

要做到這一點,除了 Python 本身之外還需要一些工具,像是 git、docker 和 make。

文件、許可證和其他通用文件

僅僅創建一個 Python 套件並使其立即可供所有人使用是不夠的。您還必須考慮如何記錄它、向其他人簡要解釋它、許可它並解釋如何整合到專案中。

這需要發展諸如 READMELICENSECODE_OF_CONDUCTCONTRIBUTING 等文件。
也許添加一個 CHANGELOG 來保存並讓其他人追蹤對每個版本所做的更改。

幾分鐘內建立項目

要實作 Python 專案的所有部分,需要幾個小時或幾天的時間。
但有一個用於此目的的工具:psp。

依照安裝說明進行操作後:

[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl
[test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb
[test@ubuntu ~] sudo dpkg -i psp.deb

運行它:

[test@ubuntu ~] psp
Welcome to PSP (Python Scaffolding Projects): 0.1.0
> Name of Python project: app
> Do you want to create a virtual environment? Yes
> Do you want to start git repository? Yes
> Select git remote provider: Gitlab
> Username of Gitlab: test_user
> Do you want unit test files? Yes
> Install dependencies: flask
> Select documention generator: MKDocs
> Do you want to configure tox? Yes
> Select remote CI provider: CircleCI
> Do you want create common files? Yes
> Select license: Gnu Public License
> Do you want to install dependencies to publish on pypi? Yes
> Do you want to create a Dockerfile and Containerfile? Yes
Python project `app` created at app

現在,檢查已建立的Python專案:

[test@ubuntu ~] ls -lah app
total 88K
drwxrwxr-x  9 test   test    440 Dec 20 14:48 .
drwxrwxrwt 29 root   root    680 Dec 20 14:49 ..
drwxrwxr-x  2 test   test     60 Dec 20 14:47 .circleci
drwxrwxr-x  7 test   test    200 Dec 20 14:47 .git
-rw-rw-r--  1 test   test    381 Dec 20 14:47 .gitignore
drwxrwxr-x  4 test   test     80 Dec 20 14:47 .gitlab
-rw-rw-r--  1 test   test    127 Dec 20 14:48 CHANGES.md
-rw-rw-r--  1 test   test   5.4K Dec 20 14:48 CODE_OF_CONDUCT.md
-rw-rw-r--  1 test   test   1.1K Dec 20 14:48 CONTRIBUTING.md
-rw-rw-r--  1 test   test    190 Dec 20 14:48 Containerfile
-rw-rw-r--  1 test   test    190 Dec 20 14:48 Dockerfile
-rw-rw-r--  1 test   test    35K Dec 20 14:48 LICENSE.md
-rw-rw-r--  1 test   test    697 Dec 20 14:48 Makefile
-rw-rw-r--  1 test   test    177 Dec 20 14:48 README.md
drwxrwxr-x  2 test   test     60 Dec 20 14:47 docs
-rw-rw-r--  1 test   test     19 Dec 20 14:47 mkdocs.yml
-rw-rw-r--  1 test   test    819 Dec 20 14:48 pyproject.toml
-rw-rw-r--  1 test   test     66 Dec 20 14:47 requirements.txt
drwxrwxr-x  2 test   test     80 Dec 20 14:47 tests
-rw-rw-r--  1 test   test    213 Dec 20 14:47 tox.ini
drwxrwxr-x  2 test   test     80 Dec 20 14:46 app
drwxrwxr-x  5 test   test    140 Dec 20 14:46 venv

開始開發包

開始開發 psp 指令為我們的專案所建立的套件。

[test@ubuntu ~] cd app/ && ls -lh app/
total 8.0K
-rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py
-rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py
[test@ubuntu ~] vim app/core.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Wow, this is my app!</p>"

現在,將我們的 hello_world 函數匯入到 __main__.py 檔案中:

pkg
├── __init__.py
├── module1.py
└── subpkg
    ├── __init__.py
    ├── __main__.py
    └── module2.py
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl
[test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb
[test@ubuntu ~] sudo dpkg -i psp.deb

運行我們的包

您已經編寫了一個簡單但有組織且功能強大的包,可以用於生產和分發。

測試我們的包。

[test@ubuntu ~] psp
Welcome to PSP (Python Scaffolding Projects): 0.1.0
> Name of Python project: app
> Do you want to create a virtual environment? Yes
> Do you want to start git repository? Yes
> Select git remote provider: Gitlab
> Username of Gitlab: test_user
> Do you want unit test files? Yes
> Install dependencies: flask
> Select documention generator: MKDocs
> Do you want to configure tox? Yes
> Select remote CI provider: CircleCI
> Do you want create common files? Yes
> Select license: Gnu Public License
> Do you want to install dependencies to publish on pypi? Yes
> Do you want to create a Dockerfile and Containerfile? Yes
Python project `app` created at app

結果是:

How to create own Python project in inutes

對包執行單元測試

現在也透過測試資料夾測試套件上的 Python 程式碼:

[test@ubuntu ~] ls -lah app
total 88K
drwxrwxr-x  9 test   test    440 Dec 20 14:48 .
drwxrwxrwt 29 root   root    680 Dec 20 14:49 ..
drwxrwxr-x  2 test   test     60 Dec 20 14:47 .circleci
drwxrwxr-x  7 test   test    200 Dec 20 14:47 .git
-rw-rw-r--  1 test   test    381 Dec 20 14:47 .gitignore
drwxrwxr-x  4 test   test     80 Dec 20 14:47 .gitlab
-rw-rw-r--  1 test   test    127 Dec 20 14:48 CHANGES.md
-rw-rw-r--  1 test   test   5.4K Dec 20 14:48 CODE_OF_CONDUCT.md
-rw-rw-r--  1 test   test   1.1K Dec 20 14:48 CONTRIBUTING.md
-rw-rw-r--  1 test   test    190 Dec 20 14:48 Containerfile
-rw-rw-r--  1 test   test    190 Dec 20 14:48 Dockerfile
-rw-rw-r--  1 test   test    35K Dec 20 14:48 LICENSE.md
-rw-rw-r--  1 test   test    697 Dec 20 14:48 Makefile
-rw-rw-r--  1 test   test    177 Dec 20 14:48 README.md
drwxrwxr-x  2 test   test     60 Dec 20 14:47 docs
-rw-rw-r--  1 test   test     19 Dec 20 14:47 mkdocs.yml
-rw-rw-r--  1 test   test    819 Dec 20 14:48 pyproject.toml
-rw-rw-r--  1 test   test     66 Dec 20 14:47 requirements.txt
drwxrwxr-x  2 test   test     80 Dec 20 14:47 tests
-rw-rw-r--  1 test   test    213 Dec 20 14:47 tox.ini
drwxrwxr-x  2 test   test     80 Dec 20 14:46 app
drwxrwxr-x  5 test   test    140 Dec 20 14:46 venv

保存我們的作品

現在您可以節省網頁應用程式的開發。

[test@ubuntu ~] cd app/ && ls -lh app/
total 8.0K
-rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py
-rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py
[test@ubuntu ~] vim app/core.py

測試環境

用docker模擬你的生產環境:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Wow, this is my app!</p>"

結果是一樣的:
How to create own Python project in inutes

使用 make 建構管道

現在,下次開發後,您可以透過Makefile使用管道:

[test@ubuntu app] vim app/__main__.py

在 PyPi 上發布包

現在,如果您願意,您就可以在 PyPi 上發布 Python 套件了:

#! /usr/bin/env python3
# -*- encoding: utf-8 -*-
# vim: se ts=4 et syn=python:
# Generated by psp (https://github.com/MatteoGuadrini/psp)

from .__init__ import __version__
print(f'app {__version__}')

from .core import app
app.run(debug=True)

結論

不到五分鐘,您就創建了一個 Python 項目,其中套件本身的開發是您唯一需要擔心的事情。

本文使用的工具:
psp:儲存庫 -- 文件
git: 儲存庫 -- 文件
docker: 儲存庫 -- 文件
make: 儲存庫 -- 文件
python: 儲存庫 -- 文件

以上是如何在 inutes 中建立自己的 Python 項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn