开发者社区 问答 正文

使用安装程序安装包时。在其他模块中导入的模块不被识别

我试图从一个私有的git repo安装一个python包,我遇到了这个问题。文件结构非常基本,如下:

stratification_tool/
    setup.py
    stratification_tool/
         __init__.py
         stratification_tool.py
         EDW_query.py

我可以成功克隆的repo和安装包运行:

python setup.py install --user

在cmd行,然后我可以尝试导入模块statification_tool和python承认模块的存在。问题是EDW_query是在statification_tool .py中导入的,当我试图导入statification_tool时,它会抛出一个错误,说EDW_query模块不存在。 问题来源StackOverflow 地址:/questions/59467331/when-installing-a-package-using-setup-py-modules-imported-within-other-modules

展开
收起
kun坤 2019-12-25 09:23:24 465 分享
分享
版权
举报
阿里云 AI 助理回答

根据你的描述,问题可能出在Python包的导入机制或者setup.py配置上。确保模块能够正确导入,你需要检查以下几个方面:

  1. 相对导入: 在stratification_tool/stratification_tool.py中,你应该使用相对导入来引用EDW_query.py。修改为以下形式:

    from . import EDW_query
    

    这告诉Python在同一个包内寻找EDW_query模块。

  2. setup.py配置: 确保你的setup.py文件正确指定了包的结构。一个基本的setup.py示例如下,它应该能正确识别你的包结构并安装所有必要的模块:

    from setuptools import setup, find_packages
    
    setup(
       name='stratification_tool',
       version='0.1',  # 请根据实际情况调整版本号
       packages=find_packages(),
       install_requires=[],  # 列出你的依赖包,如果有的话
    )
    

    find_packages()会自动发现并包含所有的子包,确保EDW_query被包含在安装过程中。

  3. 目录结构: 根据你的描述,目录结构看起来是正确的,但请再次确认__init__.py存在于每个需要作为包处理的目录中,包括stratification_tool目录下。这告诉Python这些是包而不是普通的目录。

  4. 安装环境: 确保你是在正确的Python环境中尝试导入这个包。有时候,用户可能会不小心在一个不同的Python环境中安装或尝试导入包,导致找不到模块的问题。

  5. 清理旧安装: 如果之前有尝试过安装,可能存在旧版本或者不完全的安装残留。你可以尝试先卸载已安装的包(如果能找到它的话),然后重新安装。在命令行中可以这样做:

    pip uninstall stratification_tool
    python setup.py install --user
    

如果以上步骤都确认无误,但问题依旧存在,可能需要进一步检查是否有其他依赖未被满足,或者查看是否有更详细的错误信息来定位问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: