下面是详细讲解“python如何将自己的包上传到PyPi并可通过pip安装的方法步骤”的完整攻略。
前置准备
在上传包之前,请先确保已经安装了pip和setuptools。可以通过在终端中输入以下命令进行检查:
pip --version
pip3 --version
easy_install --version
如果以上命令中有一个或者多个是可用的(显示了版本号),则已经安装了相应的软件。如果没有,则需要先安装这些软件。
Step 1 创建一个账户
首先需要在 https://pypi.org 上面创建一个账户,如果已经注册过账户,则直接跳过这一步。
Step 2 创建打包文件
创建自己的包有很多种方式,这里只提供一个简单的示例。
在当前工程的根目录下,创建一个名为 myPackage
的文件夹,并在其中创建一个名为 __init__.py
的文件。接着,在 myPackage
文件夹中创建一个名为 hello.py
的文件,其中包含以下代码:
def say_hello():
print("Hello, world!")
保存文件后,回到根目录,创建一个名为 setup.py
的文件,并输入以下代码:
from setuptools import setup, find_packages
setup(
name='myPackage',
version='0.1.0',
url='https://github.com/yourname/myPackage',
author='Your Name',
author_email='yourname@example.com',
description='A simple package for saying hello',
packages=find_packages(),
install_requires=[],
)
在此示例中,我们使用了 setuptools
模块打包了一个名为 myPackage
的包,并设置了一些基本信息。其中,find_packages
函数会自动查找所有的包。如果有其他的依赖包需要在此处添加。
Step 3 打包并上传
使用以下代码命令进行打包:
python3 setup.py sdist bdist_wheel
其中,sdist
参数用于创建源代码分发包,bdist_wheel
参数用于创建 Python 3 环境下的 wheel 文件。
在打包完成后,使用以下代码命令将包上传到 PyPI:
twine upload dist/*
在这里,我们使用了 twine
工具将打包好的文件上传到 PyPI 上。
Step 4 安装包
包上传到 PyPI 后,其他人就可以通过 pip 来安装该包了。他们只需要使用以下命令即可:
pip install myPackage
在上述命令中,myPackage
是包的名称。其他人可以直接在终端中输入此命令,即可运行该包中的 say_hello
函数。
示例
下面举两个示例,以帮助更好的理解。
示例1:上传一个命令行工具
假设我们现在需要上传一个简单的命令行工具,可以用它来查询天气。我们这个工具的名字叫做 myweather
。
为了创建这个工具,我们需要准备一个 weather.py
文件,其中包含了查询和解析天气 API 的代码,并实现一个 CLI 接口。具体代码如下:
import requests
import click
URL = "http://api.openweathermap.org/data/2.5/weather?q={},{}&units=imperial&APPID={}"
@click.command()
@click.argument("city")
@click.argument("country_code", default="us")
@click.option("--api-key", required=True, help="OpenWeatherMap API Key")
def main(city, country_code, api_key):
url = URL.format(city, country_code, api_key)
response = requests.get(url)
data = response.json()
temp = data["main"]["temp"]
print(f"Current temperature in {city}, {country_code}: {temp} F")
if __name__ == "__main__":
main()
将上述代码保存在名为 myweather
的文件夹中,然后创建 setup.py
文件,其中包含以下代码:
from setuptools import setup, find_packages
setup(
name='myweather',
version='0.1.0',
url='https://github.com/yourname/myweather',
author='Your Name',
author_email='yourname@example.com',
description='A simple CLI tool for checking weather',
packages=find_packages(),
install_requires=[
"click",
"requests"
],
entry_points={
"console_scripts": [
"myweather=myweather.weather:main"
]
}
)
使用以下命令将包上传到 PyPI:
twine upload dist/*
上传完成后,其他人就可以使用以下命令安装我们上传的 myweather
包:
pip install myweather
最后,其他人可以使用以下命令进行查询天气:
myweather london --api-key 1234567890abcdef1234567890abcdef
这里的 london
是城市名称,1234567890abcdef1234567890abcdef
是在 OpenWeatherMap 注册账户后拿到的 API Key。
示例2:上传一个常用库
假设我们现在需要上传一个名为 mylibrary
的常用库,可以将一个字符串转换为整数。我们的这个库仅包含一个模块,即 mylibrary.py
,包含以下代码:
def string_to_int(s):
if s[0] in ["-", "+"]:
sign = -1 if s[0] == "-" else 1
s = s[1:]
else:
sign = 1
result = 0
for c in s:
result *= 10
result += ord(c) - ord("0")
return sign * result
接着,将上述代码保存在名为 mylibrary
的文件夹中,并在该文件夹中创建一个名为 __init__.py
的空文件。然后创建 setup.py
文件,其中包含以下代码:
from setuptools import setup, find_packages
setup(
name='mylibrary',
version='0.1.0',
url='https://github.com/yourname/mylibrary',
author='Your Name',
author_email='yourname@example.com',
description='A library for converting strings to integers',
packages=find_packages(),
install_requires=[],
)
使用以下命令将包上传到 PyPI:
twine upload dist/*
上传完成后,其他人就可以使用以下命令安装我们上传的 mylibrary
包:
pip install mylibrary
最后,其他人可以直接在代码中使用以下命令来将字符串转换为整数:
from mylibrary import string_to_int
string_to_int("123") # 返回 123
string_to_int("-123") # 返回 -123
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python如何将自己的包上传到PyPi并可通过pip安装的方法步骤 - Python技术站