python如何将自己的包上传到PyPi并可通过pip安装的方法步骤

下面是详细讲解“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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python查找指定依赖包简介信息实现

    要查找指定的Python依赖包的简介信息,可以使用pip show命令。下面是实现该功能的完整攻略: 1. 确认已安装pip 首先需要确认已经安装了pip包管理器。可以在终端中输入以下命令确认: pip –version 如果已经安装了pip,会显示pip的版本信息。如果未安装,则需要先安装pip。 2. 使用pip show命令查找依赖包信息 使用pip…

    python 2023年6月3日
    00
  • Python和Matlab实现蝙蝠算法的示例代码

    Python和Matlab实现蝙蝠算法的示例代码 蝙蝠算法是一种基于自然界蝙蝠群体行为的优化算法,用于解决优化问题。本文将介绍如何使用Python和Matlab实现蝙蝠算法,并提供两个示例说明。 蝙蝠算法的实现步骤 蝙蝠算法的实现步骤如下: 初始化蝙蝠群体。需要定义蝙蝠的位置、速度、频率和脉冲率等参数。 计算蝙蝠的适应度。需要根据蝙蝠的位置计算适应度。 更新…

    python 2023年5月14日
    00
  • python中小数点后的位数问题

    Python 中小数点后的位数问题在数值计算中是一个重要的问题,下面详细介绍如何控制Python小数点后的位数。 控制小数点的位数 Python中的浮点数默认以十进制显示,一般情况下小数点后只显示6位,如下所示: >>> a = 1.23456789 >>> a 1.23456789 如果我们想控制小数点后位数的话,一般有…

    python 2023年6月3日
    00
  • 从 Apache 运行 python 脚本的最简单方法

    【问题标题】:Easiest way to run python script from Apache从 Apache 运行 python 脚本的最简单方法 【发布时间】:2023-04-06 05:21:01 【问题描述】: 我花了很长时间试图弄清楚这一点。我基本上是在尝试开发一个网站,当用户单击特定按钮时,我必须在其中执行 python 脚本。在研究了 …

    Python开发 2023年4月7日
    00
  • 简单掌握Python中glob模块查找文件路径的用法

    当我们需要在Python代码中查找文件路径时,可以使用glob模块来进行快速的文件匹配和遍历。下面是详细的攻略: 1. 简介 glob模块提供了一种简单的文件名模式匹配方法,可以使用通配符 * 和 ? 来匹配文件名。此外,可以使用 [] 来匹配范围内的字符。这些特殊字符在正则表达式中也有类似的用法。 2. 安装和导入 glob模块是Python自带的标准库,…

    python 2023年6月5日
    00
  • Python绘制圣诞树+落叶+雪花+背景音乐+浪漫弹窗 五合一版圣诞树

    下面是详细的Python绘制圣诞树+落叶+雪花+背景音乐+浪漫弹窗的攻略: 一、准备工作 首先,我们需要安装pygame库和pyaudio库。 可以使用以下命令来安装: pip install pygame pip install pyaudio 在绘制圣诞树时,我们还需要利用Python的turtle库。turtle是Python标准库之一,不需要额外安装…

    python 2023年5月18日
    00
  • 如何在 Python 中将单词分类?

    【问题标题】:How can I sort words into categories in Python?如何在 Python 中将单词分类? 【发布时间】:2023-04-05 23:18:01 【问题描述】: 我从事一个项目,我使用 Google 视觉来检测图像中的对象。 API 返回标签列表。所以我有多个单词,我想将每个单词归入一个类别。例如: 谷歌…

    Python开发 2023年4月6日
    00
  • python pandas创建多层索引MultiIndex的6种方式

    Python pandas是一种数据分析和操作工具,提供了多种索引方式。其中最常用的索引方式是MultiIndex,顾名思义,MultiIndex可以理解为多个索引的组合。 本文将详细介绍Python pandas创建多层索引MultiIndex的6种方式。 方法一:直接指定MultiIndex 直接使用pandas.MultiIndex.from_tupl…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部