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

Python包创建后跨项目导入失败,求排查解决方案

Python包构建后无法导入的问题排查与修复

项目情况

有一个新Python项目,PineconeClient是包含3个方法的类,通过Poetry构建whl包,安装后出现导入失败问题。

相关文件内容

indexes目录下的__init__.py

"""Wrappers on top of vector stores."""
from e61indexingclient.indexes.PineconeClient import (CreateIndex, DeleteIndex, IndexAllDocumentsFromBlobStorage)

__all__ = [
    "PineconeClient",
    "CreateIndex",
    "DeleteIndex",
    "IndexAllDocumentsFromBlobStorage"  
]

项目根目录的__init__.py

"""Main entrypoint into package."""

from importlib import metadata
from typing import Optional

try:
    __version__ = metadata.version(__package__)
except metadata.PackageNotFoundError:
    # Case where package metadata is not available.
    __version__ = ""
del metadata  # optional, avoids polluting the results of dir(__package__)

verbose: bool = False
debug: bool = False

__all__ = [
    "PineconeClient",
    "CreateIndex",
    "DeleteIndex",
    "IndexAllDocumentsFromBlobStorage"
]

pyproject.toml

[tool.poetry]
name = "e61indexingclient"
version = "0.0.5"
description = ""
authors = ["x"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.10"
langchain = "^0.0.232"
openai = "^0.27.8"
pinecone-client = "^2.2.2"
azure-storage-blob = "^12.17.0"
azure-identity = "^1.13.0"
azure-ai-textanalytics = "^5.3.0"
azure-core = "^1.28.0"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

问题现象

通过pip install pathtowhlfile成功安装包后:

  • 执行import e61indexingclient无法识别该包
  • 执行from e61indexingclient.indexes.Pineconeclient import CreateIndex, DeleteIndex无法识别相关类

错误原因与修复步骤

1. __init__.py未实际导入目标对象

根目录和indexes目录的__init__.py中,__all__列出了PineconeClient等对象,但没有对应的导入语句,导致包无法暴露这些对象。

修复:

  • 更新indexes目录下的__init__.py,添加PineconeClient的导入:
    """Wrappers on top of vector stores."""
    from e61indexingclient.indexes.PineconeClient import (
        PineconeClient,
        CreateIndex,
        DeleteIndex,
        IndexAllDocumentsFromBlobStorage
    )
    
    __all__ = [
        "PineconeClient",
        "CreateIndex",
        "DeleteIndex",
        "IndexAllDocumentsFromBlobStorage"  
    ]
    
  • 更新根目录的__init__.py,添加对应导入:
    """Main entrypoint into package."""
    
    from importlib import metadata
    from typing import Optional
    from e61indexingclient.indexes.PineconeClient import (
        PineconeClient,
        CreateIndex,
        DeleteIndex,
        IndexAllDocumentsFromBlobStorage
    )
    
    try:
        __version__ = metadata.version(__package__)
    except metadata.PackageNotFoundError:
        # Case where package metadata is not available.
        __version__ = ""
    del metadata  # optional, avoids polluting the results of dir(__package__)
    
    verbose: bool = False
    debug: bool = False
    
    __all__ = [
        "PineconeClient",
        "CreateIndex",
        "DeleteIndex",
        "IndexAllDocumentsFromBlobStorage"
    ]
    

2. 导入语句拼写错误

导入时写的Pineconeclient是小写c,但实际类名是PineconeClient(大写C),Python对大小写敏感,导致找不到类。

修复:
将导入语句修正为:

from e61indexingclient.indexes.PineconeClient import CreateIndex, DeleteIndex

3. 重新构建并安装包

执行以下命令重新生成whl并安装:

poetry build
pip install dist/e61indexingclient-0.0.5-py3-none-any.whl --force-reinstall

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:31:13