创建并发布你自己的 Python 模块是一项非常有用的技能,可以让你分享代码,并在不同项目中重用它。以下是一个完整的流程,展示如何创建、测试、打包并发布一个 Python 模块。
1. 创建你的模块
首先,创建一个目录结构来存放你的模块代码。例如,创建一个名为 mymodule
的目录:
mymodule/├── mymodule/│ ├── __init__.py│ └── mymodule.py├── tests/│ └── test_mymodule.py├── README.md├── setup.py└── LICENSE
2. 编写模块代码
在 mymodule/mymodule.py
中编写你的模块代码:
# mymodule/mymodule.pydef add(a, b):return a + bdef subtract(a, b):return a - b
在 mymodule/__init__.py
中,可以选择性地导入你想要暴露的功能:
# mymodule/__init__.pyfrom .mymodule import add, subtract
3. 编写测试代码
在 tests/test_mymodule.py
中编写测试代码:
# tests/test_mymodule.pyimport unittest
from mymodule import add, subtractclass TestMyModule(unittest.TestCase):def test_add(self):self.assertEqual(add(3, 4), 7)self.assertEqual(add(-1, 1), 0)def test_subtract(self):self.assertEqual(subtract(10, 5), 5)self.assertEqual(subtract(0, 0), 0)if __name__ == '__main__':unittest.main()
4. 编写 setup.py
setup.py
是一个配置文件,用于定义模块的元数据和依赖项:
# setup.pyfrom setuptools import setup, find_packagessetup(name='mymodule',version='0.1.0',description='A simple example module',long_description=open('README.md').read(),long_description_content_type='text/markdown',author='Your Name',author_email='your.email@example.com',url='https://github.com/yourusername/mymodule',packages=find_packages(),classifiers=['Programming Language :: Python :: 3','License :: OSI Approved :: MIT License','Operating System :: OS Independent',],python_requires='>=3.6',
)
5. 创建 README 和 LICENSE 文件
README.md
文件可以包含模块的详细说明:
# MyModuleMyModule 是一个简单的 Python 模块,包含加法和减法功能。## 安装使用 pip 安装:
pip install mymodule
## 使用```python
from mymodule import add, subtractprint(add(3, 4)) # 输出: 7
print(subtract(10, 5)) # 输出: 5
`LICENSE` 文件应该包含许可证信息,例如 MIT 许可证:
MIT License
版权所有 © 2023 Your Name
特此免费授予任何获得本软件和相关文档文件(“软件”)副本的人员无限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售本软件的副本,并允许被提供本软件的人这样做,条件是以下版权声明和本许可声明出现在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于适销性、特定用途适用性和不侵权的担保。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而产生的任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因。
### 6. 打包和发布模块使用 `setuptools` 和 `twine` 来打包和发布模块。首先,安装 `twine`:```sh
pip install twine
然后,生成分发文件:
python setup.py sdist bdist_wheel
发布到 PyPI:
twine upload dist/*
7. 安装和测试模块
发布成功后,可以使用 pip
安装模块:
pip install mymodule
并在 Python 环境中测试:
from mymodule import add, subtractprint(add(3, 4)) # 输出: 7
print(subtract(10, 5)) # 输出: 5
结论
通过上述步骤,你可以创建、打包并发布自己的 Python 模块到 PyPI。这样不仅可以分享你的代码,还能方便地在不同项目中复用这些功能。