下面是如何将自己写的模块上传到pypi的完整攻略:
准备工作
-
确认你已经具有pip和setuptools,如果没有请先安装它们。
-
注册一个pypi账号,这是为了上传模块时进行身份认证使用的。
-
在本地创建你的工程文件夹,使用以下命令创建一个python package
mkdir your_package_name
cd your_package_name
mkdir your_package_name
touch your_package_name/__init__.py -
创建setup.py文件,其中需要填写模块的基本信息、依赖和使用示例等。以下是示例代码:
```
from setuptools import setupwith open("README.md", "r") as fh:
long_description = fh.read()setup(
name="your_package_name",
version="0.0.1",
author="Your Name",
author_email="your_email@example.com",
description="Your package description",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://your_package_website.com",
packages=["your_package_name"],
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
install_requires=[
# your required packages
],
python_requires='>=3.6',
)
```
编码、测试和打包
-
编写你的Python代码,建议遵循PEP8规范,使用docstrings编写模块、函数、方法等文档。
-
编写完代码之后,可以使用unittest或者pytest等测试框架对代码进行单元测试。
-
在目录下创建MANIFEST.in文件,指定需要打包的文件或目录,以下是示例代码:
recursive-include your_package_name *
-
打包你的模块,执行以下命令:
python setup.py sdist bdist_wheel
这将会生成一个dist目录,并在其中生成你的模块的tar / zip包和wheel包。
上传到pypi
-
安装twine:
pip install twine
-
首次上传模块前,需要使用以下命令进行注册并输入pypi账号信息:
twine register dist/*
-
上传你的模块:
twine upload dist/*
在上传过程中,你需要输入pypi账号的用户名和密码,上传成功后,你的模块就已经成功上传到pypi了。
以上是将自己写的模块上传到pypi的完整攻略。下面是两个示例说明:
示例1:上传一个名为“hello”的模块
-
创建一个名为“hello”的文件夹,并在其中创建“init.py”和“hello.py”文件。
mkdir hello
cd hello
touch hello/__init__.py hello.py -
在hello.py文件中编写以下代码:
def say_hello():
print('Hello world!') -
创建setup.py文件,填写模块的基本信息和依赖,代码如下:
```
from setuptools import setupwith open("README.md", "r") as fh:
long_description = fh.read()setup(
name="hello",
version="0.0.1",
author="Your Name",
author_email="your_email@example.com",
description="A hello package",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://your_package_website.com",
packages=["hello"],
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
install_requires=[
# your required packages
],
python_requires='>=3.6',
)
``` -
运行以下命令打包并上传模块:
python setup.py sdist bdist_wheel
twine upload dist/* -
在使用该模块的项目中,可以通过以下方式导入模块并使用:
```
from hello import say_hellosay_hello()
```
示例2:上传一个名为“maths”的模块
-
创建一个名为“maths”的文件夹,并在其中创建“init.py”和“maths.py”文件。
mkdir maths
cd maths
touch maths/__init__.py maths.py -
在maths.py文件中编写以下代码:
```
def add(x, y):
return x + ydef subtract(x, y):
return x - y
``` -
创建setup.py文件,填写模块的基本信息和依赖,代码如下:
```
from setuptools import setupwith open("README.md", "r") as fh:
long_description = fh.read()setup(
name="maths",
version="0.0.1",
author="Your Name",
author_email="your_email@example.com",
description="A maths package",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://your_package_website.com",
packages=["maths"],
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
install_requires=[
# your required packages
],
python_requires='>=3.6',
)
``` -
运行以下命令打包并上传模块:
python setup.py sdist bdist_wheel
twine upload dist/* -
在使用该模块的项目中,可以通过以下方式导入模块并使用:
```
from maths import add, subtractprint(add(1, 2))
print(subtract(5, 3))
```
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何将自己写的模块上传到pypi - Python技术站