菜鸟科技网

Python setup.py命令有哪些常用参数及作用?

python setup.py 是 Python 开发中用于构建、安装、分发和管理包的核心命令,它依赖于 setuptools 库,为开发者提供了一套标准化的流程来处理包的元数据、依赖关系、构建逻辑等,通过该命令,开发者可以轻松地将代码打包成可分发的格式(如源码包、wheel 包),或直接在当前环境中安装包及其依赖,以下从功能、常用参数、实际应用场景等方面展开详细说明。

Python setup.py命令有哪些常用参数及作用?-图1
(图片来源网络,侵删)

核心功能与常用参数

python setup.py 的核心功能通过不同的子命令实现,以下列举最常用的几个子命令及其作用:

子命令 功能描述 示例用法
install 安装包到当前 Python 环境,包括依赖解析 python setup.py install
sdist 创建源码分发包(如 .tar.gz python setup.py sdist
bdist_wheel 创建 wheel 二进制分发包(.whl python setup.py bdist_wheel
upload 上传分发包到 PyPI(需配置 ~/.pypirc python setup.py upload
develop 开发模式安装,修改代码后即时生效 python setup.py develop
clean 清理构建过程中生成的临时文件 python setup.py clean --all

setup.py 文件中的 setup() 函数是配置核心,需传入关键参数,如 name(包名)、version(版本号)、packages(包含的模块列表)、install_requires(依赖包列表)等。

from setuptools import setup, find_packages
setup(
    name="my_package",
    version="0.1.0",
    packages=find_packages(),
    install_requires=["requests>=2.25.0", "numpy"],
    author="Your Name",
    author_email="your@email.com",
    description="A sample Python package",
)

实际应用场景

  1. 开发调试
    使用 python setup.py develop 可将包以“链接”方式安装到环境,修改代码后无需重新安装即可测试,适合开发阶段快速迭代。

  2. 分发打包

    Python setup.py命令有哪些常用参数及作用?-图2
    (图片来源网络,侵删)
    • 源码包:通过 sdist 生成,包含完整源码和 setup.py,适用于需要编译扩展模块的场景。
    • Wheel 包:通过 bdist_wheel 生成,预编译的二进制包,安装速度更快,是目前推荐的主流分发格式。
      打包后需通过 twine upload 上传至 PyPI(upload 命令已弃用),或通过 pip install . 本地安装。
  3. 依赖管理
    install_requires 会自动解析并安装依赖,但需注意版本冲突问题,可通过 pip check 检查依赖树。

注意事项

  • 虚拟环境:强烈建议在虚拟环境(如 venv)中执行安装,避免污染全局 Python 环境。
  • 兼容性setup.py 是传统方案,现代项目更推荐使用 pyproject.toml(PEP 518)和构建后端(如 setuptoolsflit)。
  • 安全风险:直接从源码安装可能执行恶意代码,仅信任来源明确的包。

相关问答FAQs

Q1: python setup.py installpip install . 有什么区别?
A: python setup.py install 是直接调用 setuptools 的安装逻辑,依赖解析能力较弱,且可能忽略 pip 的全局配置(如镜像源、依赖版本约束)。pip install . 则通过 pip 管理,支持更严格的依赖解析、缓存和虚拟环境隔离,是推荐的方式。

Q2: 如何在 setup.py 中自动包含所有子模块?
A: 使用 find_packages() 函数可自动发现当前目录下的所有 Python 包(文件夹)。packages=find_packages() 会包含所有子包,而 packages=find_packages(where="src") 可指定源码目录,避免手动列出模块,减少遗漏。

Python setup.py命令有哪些常用参数及作用?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇