You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python包t-extractlib安装时依赖包未自动安装问题求助

解决Python包t-extractlib依赖未自动安装的问题

我正在构建名为t-extractlib的Python包,已经在setup.py、setup.cfg和pyproject.toml中配置了nltk、PyMuPDF等依赖,但安装该包时这些依赖并未自动安装。以下是包的目录结构、各配置文件内容,需要解决此问题:

包目录结构

root
├── src
│   ├── ... (项目文件)
│   ├── setup.py
│   ├── setup.cfg
│   └── requirements
│       └── requirements.txt
└── pyproject.toml

问题根源

你的配置存在三个核心问题,导致依赖未被自动安装:

  1. pyproject.toml配置混淆:[build-system]下的requires是构建工具依赖,仅用于安装构建包所需的工具(如setuptools),不能放运行时依赖。你把nltk、PyMuPDF等运行时依赖都放在这里,导致安装包时不会自动安装这些依赖。
  2. 多配置文件冲突:同时使用setup.py、setup.cfg和pyproject.toml三个配置文件,setuptools会优先读取pyproject.toml的[project]配置,但你的pyproject.toml里没有定义运行时依赖的dependencies字段,所以依赖不生效。
  3. 包路径识别问题:find_packages()默认从当前目录查找包,但你的代码在src目录下,可能导致包未被正确识别,间接影响依赖安装逻辑。

修复步骤

1. 修正pyproject.toml配置

将[build-system]中的运行时依赖移到[project]的dependencies字段,build-system.requires只保留构建必需的工具:

[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "t-extractlib"
version = "0.0.5"
authors = [
  { name="Trae Moore", email="my.email@gmail.com" },
]
description = "A package standardized for extracting data from PDFs"
readme = "README.md"
requires-python = ">=3.10"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]
# 添加运行时依赖
dependencies = [
    "nltk==3.8.1",
    "PyMuPDF==1.21.1",
    "camelot-py==0.11.0",
    "opencv-python==4.7.0.72",
    "ghostscript==0.7"
]

[project.urls]
"Homepage" = "https://github.com/traemoore/extractlib"
"Bug Tracker" = "https://github.com/traemoore/extractlib/issues"

2. 统一配置文件(二选一)

为避免配置冲突,推荐保留一种配置方式:

  • 推荐:纯pyproject.toml:删除setup.py和setup.cfg,所有配置都放在pyproject.toml中(上面的修正已经包含完整配置)。
  • 或者:保留setup.cfg+pyproject.toml:删除pyproject.toml中的[project]部分,确保setup.cfg的[options]里的install_requires正确,同时在setup.cfg中添加包路径配置:
    [options]
    packages = find:
    package_dir = =src  # 指定从src目录找包
    install_requires =
        nltk==3.8.1
        PyMuPDF==1.21.1
        camelot-py==0.11.0
        opencv-python==4.7.0.72
        ghostscript==0.7
    python_requires = >=3.10
    

3. 修正包发现路径

如果代码在src目录下,必须明确告诉setuptools包的位置:

  • 若用pyproject.toml,在[project]中添加:
    packages = { find = { where = "src" } }
    
  • 若用setup.py,修改find_packages为:
    packages=find_packages(where="src"),
    package_dir={"": "src"},
    

4. 重新构建安装

执行以下命令清理旧构建并重新安装:

# 卸载旧包
pip uninstall t-extractlib -y
# 删除构建缓存
rm -rf build dist *.egg-info  # Windows用 rmdir /s /q build dist *.egg-info
# 构建包
python -m build
# 安装新构建的包
pip install dist/t_extractlib-0.0.5-py3-none-any.whl

内容的提问来源于stack exchange,提问作者Trae Moore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:55:26