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

PyPI发布的Extractable库pip安装后无法导入问题排查

问题诊断与修复方案

核心问题

你的包安装后仅存在Extractable.dist-info元数据目录,缺少实际代码目录,导致Python无法识别为可导入模块。根源是构建配置未正确指定要包含的Python包/模块,使得PyPI上的包只打包了元数据,没有业务代码。

具体错误点

  1. setup.py 配置误用:

    • 使用了针对单文件模块的py_modules参数,但你的项目是多文件包结构(Extractable/、TableGenerator/文件夹),应使用packages参数指定包。
    • py_modules中的路径写法错误,即使是单文件模块也需用模块名而非文件路径。
    • 未使用find_packages()自动发现src目录下的包,导致构建时遗漏代码文件。
  2. pyproject.toml 配置缺失:

    • [project]部分未指定packages字段,setuptools无法识别需要打包的包目录。
  3. 包结构不完整:

    • src/Extractable和src/TableGenerator目录大概率缺少__init__.py文件,Python无法将其识别为可导入的包。
    • package_data配置了不存在的sample包资源,属于无效配置。

修复步骤

步骤1:补全包结构

在src/Extractable/和src/TableGenerator/目录下创建空的__init__.py文件(子目录如Datatypes也需添加),示例结构:

src/
├── Extractable/
│   ├── __init__.py
│   ├── Datatypes/
│   │   ├── __init__.py
│   │   └── ...
│   └── Extractor.py
└── TableGenerator/
    ├── __init__.py
    ├── CreatePDFTable.py
    └── fonts/
        └── ...

步骤2:修正setup.py配置

替换py_modules为packages,使用find_packages()自动发现包:

from setuptools import setup, find_packages
with open("README.md", "r") as fh:
    long_description = fh.read()

setup(
    name='Extractable',
    version='0.0.2',
    description='Extract tables from PDFs',
    packages=find_packages(where='src'),
    package_dir={'': 'src'},
    include_package_data=True,
    package_data={
        'Extractable': ['Datatypes/*'],
        'TableGenerator': ['fonts/*'],
    },
    long_description=long_description,
    long_description_content_type="text/markdown",
    classifiers=[
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.11",
        "License :: OSI Approved :: MIT License",
        "Natural Language :: English"
    ],
    extras_require={
        "dev": [
            "pytest>=3.7",
        ],
    },
    install_requires=[
        "toolz ~= 0.12.0",
        "torch ~= 2.0.1",
        "Pillow ~= 9.5.0",
        "transformers ~= 4.29.2",
        "matplotlib >=3",
        "pdf2image ~= 1.16.3",
        "pdf2jpg ~= 1.1",
        "scipy ~= 1.10.1",
        "timm",
        "defusedxml",
        "Faker ~= 18.9.0"
    ],
    url="https://github.com/SuleyNL/Extractable",
    author="Suleymen C. Kandrouch",
    author_email="suleyleeuw@gmail.com",
)

步骤3:修正pyproject.toml配置

在[project]部分添加packages字段:

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

[project]
name = "Extractable"
version = "0.0.2"
authors = [
  { name="Suleymen C. Kandrouch ", email="suleyleeuw@gmail.com" },
]
description = "Extracting tables from PDFs"
readme = {file = "README.md", content-type = "text/markdown"}
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]
license = {file = "LICENSE.txt"}
dependencies = [
    "toolz ~= 0.12.0",
    "torch ~= 2.0.1",
    "Pillow ~= 9.5.0",
    "transformers ~= 4.29.2",
    "matplotlib >=3",
    "pdf2image ~= 1.16.3",
    "pdf2jpg ~= 1.1",
    "scipy ~= 1.10.1",
    "timm",
    "defusedxml",
    "Faker ~= 18.9.0"
]
packages = ["Extractable", "TableGenerator"]

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

步骤4:重新构建上传

  1. 清理旧构建文件:删除build/、dist/、*.egg-info/目录
  2. 重新构建:
py -m build
  1. 上传新版本:
twine upload dist/*

验证修复

安装新版本后,检查Python的site-packages目录,若出现Extractable/和TableGenerator/目录,即可正常执行import Extractable。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:14:54