我试图从一个私有的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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据你的描述,问题可能出在Python包的导入机制或者setup.py
配置上。确保模块能够正确导入,你需要检查以下几个方面:
相对导入: 在stratification_tool/stratification_tool.py
中,你应该使用相对导入来引用EDW_query.py
。修改为以下形式:
from . import EDW_query
这告诉Python在同一个包内寻找EDW_query
模块。
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
被包含在安装过程中。
目录结构: 根据你的描述,目录结构看起来是正确的,但请再次确认__init__.py
存在于每个需要作为包处理的目录中,包括stratification_tool
目录下。这告诉Python这些是包而不是普通的目录。
安装环境: 确保你是在正确的Python环境中尝试导入这个包。有时候,用户可能会不小心在一个不同的Python环境中安装或尝试导入包,导致找不到模块的问题。
清理旧安装: 如果之前有尝试过安装,可能存在旧版本或者不完全的安装残留。你可以尝试先卸载已安装的包(如果能找到它的话),然后重新安装。在命令行中可以这样做:
pip uninstall stratification_tool
python setup.py install --user
如果以上步骤都确认无误,但问题依旧存在,可能需要进一步检查是否有其他依赖未被满足,或者查看是否有更详细的错误信息来定位问题。