详情也在:https://github.com/hongtaoh/create_py_module
很多时候我们只是用别人的包,但有时候我们需要自己制作一个 python 包。此教程用最简单的例子解释如何制作一个 python package 并放在 https://pypi.org/ 上。
此教程参考 Jason Dsouza 的教程: How to Build Your Very First Python Package
此教程也参考了 ChatGPT 的回答。
此教程的成品:
- https://github.com/hongtaoh/htpymodule
- https://pypi.org/project/htpymodule/
首先,你要给你的包起一个名字,要不同于我的例子:htpymodule
。包的名字如果包含 _
,上传之后 pypi 会自动换成 -
。
项目结构 #
你的包应该有类似这样的结构:
mypypackage/
│
├── htpymodule/
│ ├── __init__.py
│ ├── add.py
│ ├── subtract.py
│ └── extras/
│ ├── multiply.py
│ └── divide.py
│
├── setup.py
├── README.md
└── LICENSE (optional)
其中
add.py
:
def add(x, y):
return x + y
subtract.py
:
def subtract(x, y):
return x - y
extras/multiply.py
:
def multiply(x, y):
return x * y
extras/divide.py
:
def divide(x, y):
if y == 0:
raise ValueError("Cannot divide by zero.")
return x / y
htpymodule/__init__.py
:
from .add import add
from .subtract import subtract
from .extras.multiply import multiply
from .extras.divide import divide
htpymodule/setup.py
:
from setuptools import setup, find_packages
setup(
name="htpymodule",
version="0.3.1",
packages=find_packages(),
description="A very simple example module for basic arithmetic operations.",
long_description=open('README.md').read(), # Read the content of your README file for a long description
long_description_content_type='text/markdown', # Ensure the long description is in markdown format
author="Jason Dsouza, ChatGPT, and Hongtao Hao",
author_email="hhao9@wisc.edu",
# your source code url:
url="https://github.com/hongtaoh/htpymodule/",
install_requires=[
# add any additional packages that
# needs to be installed along with your package. Eg: 'pandas'
],
)
Build & Publish #
在项目根目录:
python setup.py sdist bdist_wheel
pip install .
python setup.py sdist bdist_wheel
可以把 python 包弄好。
pip install .
可以在本地直接安装此包。
为了验证,你可以在根目录创建一个 test.py
,检测该包是否正常运行:
from htpymodule import add, subtract, multiply, divide
print(add(1, 2)) # Output: 3
print(subtract(5, 3)) # Output: 2
print(multiply(4, 2)) # Output: 8
print(divide(10, 2)) # Output: 5.0
如果一切正常,我们要把包上传到 https://pypi.org/
如果你没有 PyPi 账号,先注册一个:https://pypi.org/account/register/
你大概率需要设置双重验证 (Two factor authentication (2FA))。
弄好之后,打开 https://pypi.org/manage/account/
找到 API tokens,选择 Add API token,随便填一个 token name,选择 Entire account,然后点击 Add token。把 token 保存起来。
然后,在根目录运行
pip install twine
twine upload dist/*
然后粘贴你刚才保存的 token。然后你就可以看到你的包在 pypi 上线了:https://pypi.org/project/htpymodule/
所有人都可以通过运行
pip install htpymodule
来安装你的包。
如何更新 #
每次更新时,你需要更改 htpymodule/setup.py
里的 version
,比如,从 0.1
改成 0.1.1
。
然后
python setup.py sdist bdist_wheel
twine upload dist/*
pypi 会自动保存所有的版本记录。
#编程最后一次修改于 2024-09-17