這是使用GitHub Actions CI/CD設置的示例PYPI(Python軟件包索引)軟件包。它主要是針對即將編寫和發布其第一個PYPI軟件包的GitHub + VS代碼(Windows / Mac / Linux)用戶製造的。該軟件包可以用作入門 /樣板 /演示,教程可以為您提供快速簡潔的解釋,以解決您可能遇到的一些小但煩人的問題,例如軟件包 /模塊名稱混亂,VS代碼測試配置問題。
此示例軟件包的靈感來自 /基於官方示例項目pypa / sameproject,但此軟件包:
master分支或main分支時對測試進行測試,並在創建版本時發表PYTHONPATH中,因此測試文件沒有堆積錯誤,並且可以在VS代碼中使用Pytest運行(單擊上面的按鈕將此示例軟件包用作您的新GitHub存儲庫的模板,這將初始化一個新的存儲庫,而我的提交不會在您的git歷史記錄中)
(如果您不使用GitHub,則可以下載示例軟件包的檔案
許多人使用相同的軟件包和模塊名稱,您絕對可以這樣做。但是此示例軟件包及其模塊的名稱不同: example_pypi_package和examplepy 。
打開帶有Visual Studio代碼, Ctrl + Shift + F (Windows / Linux)或CMD + Shift + F (MacOS)的example_pypi_package文件夾,以查找名稱的所有出現,並用軟件包和模塊的名稱替換它們。還要記住更改文件夾SRC/examplepy的名稱。
簡而言之,非常粗略地說,包裝名稱用於pip install <PACKAGENAME> ,並且模塊名稱在import <MODULENAME>中使用。兩個名稱都應由小寫基本字母(AZ)組成。如果您真的需要它們,它們可能會有強調( _ )。連字符( - )不應使用。
您還需要確保URL“ https://pypi.org/project/example-pypi-package/”(用包裝名稱替換example-pypi-package ,而所有_ sexempi - -package則不佔用。
可以使用下劃線( _ ),但這種使用是不建議的。如果名稱不以一個數字開頭,則可以使用數字,但是也不建議使用這種使用。
名稱以數字和/或包含連字符的數字( - )開頭:儘管從技術上講是合法的,但這種名稱會導致很多麻煩 - 用戶必須使用importlib將其導入。
不要被pypi.org上的url“ pypi.org/project/project/example-pypi-package/”和名稱“ example-pypi-package”。 pypi.org和pip系統將所有_轉換為-並在網站 / in pip命令上使用後者,但是真實名稱仍然與_相關,用戶在導入軟件包時應使用哪個。
如果您需要子包裝,也可以使用名稱空間。
在設置中進行必要的更改。
軟件包的版本號__version__在src/examplepy/__ init__.py中。您可能想改變這一點。
該示例軟件包的設計與Python 3.6、3.7、3.8、3.9兼容,並將針對這些版本進行測試。如果您需要更改版本範圍,則應更改:
classifiers , setup.py中的python_requiresenvlistmatrix: python:在.github/workflows/test.yml如果您打算將用於測試目的的PYPI的操場上傳到TestPypi,請在文件.github/workflows/reparte.yml中更改twine upload --repository pypi dist/*到twine upload --repository testpypi dist/* 。
PIP是Python軟件包經理。如果使用Python 3.4和更高版本,則已經有PIP,默認情況下包括它。閱讀此內容以了解如何檢查PIP是否已安裝。如果需要安裝,請閱讀此內容。
Visual Studio代碼是當今最受歡迎的代碼編輯器,我們的示例軟件包已配置為使用VS代碼。
安裝VS代碼擴展名“ Python”。
“ Python” VS代碼擴展名建議您安裝Pylint。另外,將示例軟件包配置為使用vs code + python擴展的pytest,因此,安裝pylint和pytest:
pip install pylint pytest(很可能會提示您安裝它們,如果是這樣,則無需輸入和執行命令)
vscode.env的內容現在為PYTHONPATH=/;src/;${PYTHONPATH}對Windows有好處。如果使用Linux或MacOS,則需要將其更改為PYTHONPATH=/:src/:${PYTHONPATH} (替換;用: 。如果路徑未正確設置,您會看到測試文件中的絨毛錯誤,而Pytest將無法正確運行測試/測試_*。 py文件。
關閉並重新打開與代碼。現在,您可以單擊左菜單中的實驗室瓶圖標,並使用Pytest進行所有測試。 PYTEST似乎比標準Unittest Framework更好,它支持unittest因此您可以在測試文件中繼續使用import unittest 。
示例軟件包還具有.editorConfig文件。您可以安裝使用該文件的VS代碼擴展名為“ VS代碼的EditorConfig”。使用當前配置,EditorConfig工具可以自動使用空格(4個空格,為.py,其他空間為2個)進行凹痕,設置UTF-8編碼,線路的LF端,在非標記文件中的修剪式落後空間等。
在VS代碼中,您可以轉到文件 - >首選項 - >設置,在搜索框中鍵入“ Python格式化提供商”,然後選擇三種Python代碼格式化工具之一(AUTOPEP8,Black和Yapf),您將提示安裝它。格式化代碼文件的快捷方式是Shift + Alt + F (Windows); Shift + Option(Alt) + F (MACOS); Ctrl + Shift + I (Linux)。
在src/ examplepy/ ( examplepy應該由您的模塊名稱替換)文件夾中,重命名module1.py並在其中寫入您的代碼。如果需要,請添加更多模塊.py文件。
在測試/文件夾中,重命名test_module1.py (用於測試_*。py ),並在其中編寫單元測試代碼(帶有UnitSest)。如果需要,請添加更多測試_*。 py文件。
安裝托克斯並運行它:
pip install tox
tox在我們的配置中,Tox使用Check-Manifest(需要您的存儲庫進行git-initialized( git init )並添加( git add . ),setUptools的支票和使用pytest的單元測試。您不需要安裝Check-Manifest和Pytest,TOX會將它們安裝在單獨的環境中。
自動化測試是針對多個Python版本進行的,但是在您的計算機上,如果是Python 3.9,則可能僅使用一個版本的Python,然後運行:
tox -e py39如果將更多文件添加到root目錄( example_pypi_package/ ),則需要將文件添加到tox.ini中的check-manifest --ignore列表中。
安裝或升級setuptools和wheel :
python -m pip install --user --upgrade setuptools wheel (如果python3是計算機上的命令,請將python更改為上述命令中的python3 ,或在Linux上使用BASH(在Linux上使用bash),將alias python=python3 python = 〜/.bash_aliases文件)
dist在example_pypi_package目錄中,運行以下命令,以生成dist文件夾中的生產版本(SDIST):
python setup.py sdist bdist_wheel可選地,您可以在上傳到PYPI或testPypi之前在本地安裝軟件包的DIST版本:
pip install dist/example_pypi_package-0.1.0.tar.gz(您可能需要首先卸載現有軟件包:
pip uninstall example_pypi_package可能有幾個帶有相同名稱的軟件包,因此請多次運行pip uninstall直到它說沒有更多包裝可以刪除為止。 )
在PYPI上註冊一個帳戶,轉到帳戶設置§API令牌,“添加API令牌”。 PYPI令牌僅出現一次,將其複製到某個地方。如果您錯過了它,請刪除舊的,並添加一個新的令牌。
(如果您要上傳到TestPypi,請註冊一個TestPypi帳戶)
在您新創建或現有的GitHub存儲庫的頁面上,單擊“設置” - >秘密- >新存儲庫秘密,名稱應為PYPI_API_TOKEN ,值應該是您的pypi代幣(以pypi- )開頭。
該示例軟件包具有自動測試和上傳(發布)已設置為GitHub操作:
git push或拉動請求都會在master或main分支上提交時,都會針對帶有GitHub操作的所需Python版本進行測試。在PYPI上發佈軟件包後,請訪問https://pypi.org/project/example-pypi-package/(_ _ - 。在頁面上複製命令,執行該命令以下載並從PYPI安裝軟件包。 (或test.pypi.org如果使用)
如果要在pypi.org上修改軟件包的描述 /讀數,則必鬚髮布一個新版本。
安裝或升級麻線:
python -m pip install --user --upgrade twine在您的$ home ( 〜 )目錄中創建一個.pypirc文件,其內容應為:
[pypi]
username = __token__
password = <PyPI token> (如果您要上傳到testPypi)(使用[testpypi]而不是[pypi] )
用您的真實PYPI <PyPI token>幣(以pypi- )為單位。
(如果您不手動創建$ home/.pypirc ,則會提示您使用用戶名(應該是__token__ )和密碼(應該是您的pypi token)。
運行麻線以在Dist文件夾下上傳所有檔案:
python -m twine upload --repository pypi dist/ * (如果要上傳到testpypi,請使用testpypi而不是pypi )
完成包裝的較新版本後,請執行以下操作。
在src examplepy__init __. py中修改版本號__version__ 。
刪除Dist中的所有舊版本。
再次運行以下命令以再生區域:
python setup.py sdist bdist_wheel再次運行以下命令以上傳區域:
python -m twine upload --repository pypi dist/ * (如果需要,請使用testpypi而不是pypi )
順便說一句,如果要將打字稿(JavaScript)軟件包發佈到NPM註冊表中,請轉到準備在2021年在NPM上發布的示例TypeScript軟件包。