杰瑞科技汇

Python setuptools下载命令或方法是什么?

setuptools 是 Python 生态中最基础、最重要的工具之一,它不仅仅是一个“下载器”,而是一个打包和分发工具,你使用它来将你的 Python 项目打包成标准的格式(如 wheel 或 sdist),这样其他人就可以轻松地安装你的项目。

Python setuptools下载命令或方法是什么?-图1
(图片来源网络,侵删)

下面我将从几个方面来回答你的问题:

  1. 为什么需要 setuptools - 理解它的核心作用。
  2. 如何安装/下载 setuptools - 指令和详细步骤。
  3. 如何使用 setuptools - 一个简单的“Hello World”示例。
  4. 常见问题和进阶用法。

为什么需要 setuptools

想象一下,你写了一个很棒的 Python 库,里面有几十个文件和文件夹,你想把它分享给同事或者发布到 PyPI(Python 官方包索引),让别人能用 pip install your-library 来安装。

直接把一堆文件扔给别人是不现实的。setuptools 就是来解决这个问题的,它的核心功能包括:

  • 构建分发包:将你的项目代码打包成 .whl (Wheel) 或 .tar.gz (Source Distribution) 格式,这些是标准的安装包格式。
  • 管理依赖:通过 setup.py 文件声明你的项目需要哪些第三方库,pip 在安装时会自动处理这些依赖。
  • 创建可执行程序:可以将你的 Python 脚本打包成独立的可执行文件。
  • 支持插件系统:可以与 build, twine, pytest 等众多工具无缝集成。

setuptools 是 Python 项目从代码到分发的桥梁。

Python setuptools下载命令或方法是什么?-图2
(图片来源网络,侵删)

如何安装/下载 setuptools

setuptools 会作为 pip 的依赖被一起安装,所以你大概率已经有了它,但如果你需要手动安装或更新,方法非常简单。

使用 pip (推荐)

这是最标准、最推荐的方式,打开你的终端或命令行工具,运行以下命令:

安装最新版本的 setuptools

python -m pip install --upgrade setuptools
  • python -m pip 是一种更可靠的调用 pip 的方式,可以避免系统 Python 和虚拟环境 Python 之间的路径冲突。
  • --upgrade 参数确保你安装的是最新版本。

安装特定版本 如果你需要特定版本的 setuptools,可以指定版本号:

Python setuptools下载命令或方法是什么?-图3
(图片来源网络,侵删)
python -m pip install setuptools==68.2.2

使用 ensurepip (用于创建纯净环境)

如果你在创建一个新的 Python 虚拟环境时,发现没有 pipsetuptools,可以使用 ensurepip 来引导安装它们。

# 创建一个虚拟环境并自动安装 pip 和 setuptools
python -m venv myenv
# 激活虚拟环境 (Windows)
myenv\Scripts\activate
# 激活虚拟环境 (macOS/Linux)
source myenv/bin/activate
# 在虚拟环境中,ensurepip 通常会自动运行
# 如果需要手动运行:
python -m ensurepip --upgrade

从源码安装 (高级用户)

如果你想从最新的源码安装 setuptools(想体验开发版功能),可以从其 GitHub 仓库克隆。

# 1. 克隆仓库
git clone https://github.com/pypa/setuptools.git
cd setuptools
# 2. 安装
# 使用 pip 从当前目录安装
python -m pip install .

如何使用 setuptools? (一个简单示例)

创建一个项目并使用 setuptools 打包它,通常需要以下几个步骤:

步骤 1:创建项目结构

假设你的项目结构如下:

my_project/
├── my_package/
│   ├── __init__.py
│   └── utils.py
├── setup.py
└── README.md
  • my_package/ 是你的包名。
  • __init__.py 告诉 Python 这个目录是一个包。
  • utils.py 是你的代码文件。
  • setup.pysetuptools 的配置文件(核心)。
  • README.md 是项目的说明文档。

步骤 2:编写代码

my_package/utils.py

def say_hello(name):
    """一个简单的问候函数"""
    return f"Hello, {name}! Welcome to the world of setuptools!"
def add(a, b):
    """一个简单的加法函数"""
    return a + b

my_package/__init__.py

# 从 utils.py 导入函数,这样可以直接从包调用
from .utils import say_hello, add
__version__ = "0.1.0" # 定义包的版本号

步骤 3:编写 setup.py 文件

这是最关键的一步,它定义了你的项目如何被构建和分发。

setup.py

from setuptools import setup, find_packages
# 从包的 __init__.py 中读取版本号
# 这是一个好习惯,避免版本号在多处定义
from my_package import __version__
# 使用 find_packages() 自动发现所有包
# 使用 long_description 从 README.md 读取项目描述
with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()
setup(
    name="my-awesome-project", # 项目在 PyPI 上的名称
    version=__version__,       # 版本号
    author="Your Name",        # 作者
    author_email="your.email@example.com", # 作者邮箱
    description="A small example package",  # 简短描述
    long_description=long_description,     # 详细描述
    long_description_content_type="text/markdown", # 描述的格式
    url="https://github.com/yourusername/my_project", # 项目主页
    packages=find_packages(), # 自动找到所有包
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License", # 使用 MIT 许可证
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.7', # 要求的最低 Python 版本
)

步骤 4:构建你的分发包

在项目根目录(my_project/)下打开终端,运行构建命令。

# 确保你在 my_project 目录下
cd my_project
# 1. 安装构建工具 (wheel, build)
# 这是现代 Python 打包的标准做法
python -m pip install --upgrade build
# 2. 执行构建
# 这会创建一个 dist/ 文件夹
python -m build

执行成功后,你会看到项目根目录下多了一个 dist 文件夹:

my_project/
├── dist/
│   ├── my_awesome_project-0.1.0-py3-none-any.whl
│   └── my_awesome_project-0.1.0.tar.gz
  • .whl 文件是 Wheel 格式,是 pip 推荐的安装格式,安装速度更快。
  • .tar.gz 文件是源码分发格式,适用于需要编译扩展模块的项目。

步骤 5:安装和测试

你可以像安装任何其他第三方库一样安装你刚刚打包好的包。

# 安装 wheel 文件
pip install dist/my_awesome_project-0.1.0-py3-none-any.whl
# 现在可以在 Python 中导入并使用你的包了
python
>>> import my_package
>>> my_package.say_hello("Alice")
'Hello, Alice! Welcome to the world of setuptools!'
>>> my_package.add(10, 5)
15

常见问题和进阶用法

问题:ModuleNotFoundError: No module named 'setuptools'

原因:Python 环境中没有安装 setuptools解决:按照第 2 部分的方法,使用 python -m pip install setuptools 安装。

进阶用法:使用 pyproject.toml (现代标准)

从 Python 3.11+ 开始,社区推荐使用 pyproject.toml 来替代 setup.pysetuptools 可以通过 [build-system] 表格来配置。

pyproject.toml

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "my-awesome-project"
version = "0.1.0"
authors = [
  { name="Your Name", email="your.email@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]
# 这里可以声明依赖
# dependencies = [
#   "requests>=2.20.0",
# ]

在这种情况下,你仍然需要 setup.pysetup.cfg 来包含一些 setuptools 特有的配置(find_packages()),但核心的元数据都移到了 pyproject.toml 中,这是未来的趋势。

任务 命令/方法
安装/更新 setuptools python -m pip install --upgrade setuptools
创建项目 创建目录结构,编写代码,创建 setup.py
构建分发包 python -m pip install build python -m build
安装本地包 pip install dist/your-package.whl

希望这份详细的指南能帮助你完全理解和使用 setuptools

分享:
扫描分享到社交APP
上一篇
下一篇