新MacBook用pyenv搭建Python环境后依赖包报错找不到ad_manager模块
问题根因
你遇到的是Python 3默认启用绝对导入规则导致的第三方包内部导入失败问题,触发条件有两个:
- 你安装的
googleads版本内部写了不规范的同级导入语句,没有加相对导入前缀. - 当前Python环境的
sys.path没有包含googleads包本身的目录,解释器无法按绝对导入规则找到ad_manager模块
旧设备能正常运行大概率是旧设备的googleads版本写法规范,或是旧Python版本兼容隐式相对导入。
解决方案
方案1:永久兼容(推荐)
先在旧设备执行pip show googleads查对应版本号,在新设备虚拟环境中安装相同版本即可:
pip install googleads==[旧设备对应的版本号]
方案2:临时修复(无需改依赖版本)
直接修改googleads包的导入语句,打开路径/Users/derek/.pyenv/versions/VIRTUAL_ENV_3.8.6/lib/python3.8/site-packages/googleads/__init__.py,将第17行的导入代码改为相对导入格式:
# 原写法 from ad_manager import AdManagerClient # 修改后 from .ad_manager import AdManagerClient
如果有其他同级导入报错,统一加.前缀即可。
方案3:修改环境变量适配
如果不想修改第三方包源码,也可以把googleads包的目录临时加到PYTHONPATH中:
export PYTHONPATH=/Users/derek/.pyenv/versions/VIRTUAL_ENV_3.8.6/lib/python3.8/site-packages/googleads:$PYTHONPATH
需要永久生效的话,把上述命令添加到你当前使用的Shell配置文件(~/.zshrc或~/.bashrc)中,重启终端即可生效。
验证方法
修复完成后执行以下命令,无报错则说明问题解决:
python -c "from googleads import AdManagerClient"
内容的提问来源于stack exchange,提问作者doman412
相关产品推荐
相关产品推荐

