Windows7下Python2.7运行setup.py遇_markerlib导入错误求助
sdist命令报_markerlib导入错误的思路 首先,你遇到的这个ImportError: No module named _markerlib问题,大概率是distribute(旧版setuptools分支)和markerlib版本不兼容,或者包的安装路径没被Python识别导致的,给你几个可逐步尝试的解决办法:
卸载distribute,换成兼容Python2.7的setuptools版本
你当前用的distribute-0.7.3太老旧,和新版markerlib存在兼容性问题,而且后来distribute已经合并到setuptools了。执行以下命令:# 先卸载distribute pip uninstall -y distribute # 安装支持Python2.7的最高版本setuptools pip install setuptools==44.1.1这个版本的setuptools自带适配的markerlib相关模块,大概率能直接解决导入问题。
重新安装适配Python2.7的markerlib版本
如果上面的操作后仍报错,手动指定markerlib的兼容版本安装:pip install markerlib==0.6.2安装完成后,用下面的命令验证是否能正常导入:
python -c "from _markerlib import compile as compile_marker; print('导入成功')"如果输出“导入成功”,再重新运行
sdist命令试试。检查包的安装路径是否正确
有时候手动下载的包可能没装到Python2.7的site-packages目录里,执行以下命令查看Python的site-packages路径:python -c "import site; print(site.getsitepackages())"打开输出的路径,确认里面存在
markerlib文件夹和_markerlib.pyd(Windows下的编译模块文件),如果没有,重新用pip安装一次,确保安装过程无报错。清理项目的egg-info缓存
项目根目录下的SIMPLE_SOLVER.egg-info文件夹可能残留了旧的依赖配置,先删掉这个文件夹,再重新运行:python setup.py sdist临时添加site-packages路径到sys.path(应急方案)
如果上面的方法都无效,可以在setup.py的最开头添加以下代码,强制Python识别site-packages路径:import sys # 替换成你的Python2.7 site-packages实际路径 sys.path.append("D:\\Python27\\Lib\\site-packages")不过这只是临时 workaround,建议优先解决安装层面的问题。
内容的提问来源于stack exchange,提问作者Dave_Z.

