Ubuntu 16.04.4下Python 2.7安装报错:setup脚本指定绝对路径
我之前在Ubuntu 16.04上碰到过几乎一模一样的问题,根源很明确——你的setup.py(或者关联的MANIFEST.in)里错误地使用了.gitignore的绝对路径,而系统更新后升级的新版setuptools严格禁止在打包配置中使用绝对路径,这是为了保证Python包的可移植性。
下面是具体的排查和修复步骤:
第一步:检查setup.py中的路径配置
打开你的setup.py,找到package_data、data_files或者include_package_data相关的配置块,看看是不是写了类似/home/me/some_repo/.gitignore这种绝对路径。
错误示例:setup( name="my_package", ... package_data={ "my_package": ["/home/me/some_repo/.gitignore"] } )修正为相对路径(相对于项目根目录):
setup( name="my_package", ... package_data={ "my_package": [".gitignore"] } )如果
.gitignore在子目录下,比如config/.gitignore,就写对应的相对路径即可。第二步:检查MANIFEST.in文件
如果项目里有MANIFEST.in,也要打开看看有没有类似include /home/me/some_repo/.gitignore的绝对路径配置,同样改成include .gitignore这种相对路径写法。第三步:临时回退setuptools版本(可选)
如果你暂时不想修改配置,也可以尝试回退到Ubuntu 16.04默认的setuptools版本,因为系统更新可能把它升级到了更严格的版本。执行以下命令:sudo pip install setuptools==39.0.0之后再重新运行
sudo python setup.py install试试。不过还是推荐优先修正路径问题,避免后续其他隐患。第四步:验证修复结果
改完配置后,先执行python setup.py egg_info或者python setup.py build测试一下,如果没有报错,再执行安装命令就正常了。
内容的提问来源于stack exchange,提问作者myoan

