作者:FloatingGuy 转载请注明出处:https://floatingguy.github.io/
$ pip
1 2 3
| File "/Library/Python/2.7/site-packages/distribute-0.6.14-py2.7.egg/pkg_resources.py", line 552, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: pip==9.0.1
|
故事
参考:Mac OS X 上如何切换默认的 Python 版本?
因为 mac 上自带的python 使用pip 安装失败, 是因为 SIP 对目录权限的限制,所以我自己安装python-2.7.13使用brew。
我之前一直 使用python-2.7.10, 将模块几乎都安装在 /Library/Python/2.7/site-packages/
这里。
Bug
自从 有一次要升级frida 要安装frida 10.0.6, 安装新版本之前是可以使用但是pip 有下面bug。
1 2 3 4 5 6 7 8 9 10 11
| ➜ Reverse pip Traceback (most recent call last): File "/usr/local/bin/pip", line 6, in <module> from pkg_resources import load_entry_point File "/Library/Python/2.7/site-packages/distribute-0.6.14-py2.7.egg/pkg_resources.py", line 2671, in <module> working_set.require(__requires__) File "/Library/Python/2.7/site-packages/distribute-0.6.14-py2.7.egg/pkg_resources.py", line 654, in require needed = self.resolve(parse_requirements(requirements)) File "/Library/Python/2.7/site-packages/distribute-0.6.14-py2.7.egg/pkg_resources.py", line 552, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: pip==9.0.1
|
1 2
| * pypi 下载 egg * sudo easy_install xx.egg
|
下载frida10.0.6 的egg 文件,使用easy_install 安装以后,frida 也出现了 类似pip 的bug.
此时 将frida-10.0.6 默认安装在了 /usr/local/lib
目录,是因为我使用的 easy_install 在/usr/local/bin
目录。
1 2 3 4 5 6 7 8 9
| ➜ Reverse frida Traceback (most recent call last): File "/usr/local/bin/frida", line 6, in <module> from pkg_resources import load_entry_point File "/Library/Python/2.7/site-packages/distribute-0.6.14-py2.7.egg/pkg_resources.py", line 2675, in <module> parse_requirements(__requires__), Environment() File "/Library/Python/2.7/site-packages/distribute-0.6.14-py2.7.egg/pkg_resources.py", line 552, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: frida==10.0.6
|
解决办法
参考 brew 的issue
按照文章中所说出现bug的原因是 老版本的pip 还在pip的启动脚本。我查看了 /usr/local/bin/pip
1 2 3 4 5
| ``` 所以我将`/usr/local/lib/python2.7/site-packages/frida-10.0.6-py2.7-macosx-10.12-x86_64.egg` 文件移动到了 `/Library/Python/2.7/site-packages` 目录下。 其实 只要不在 `/usr/local/lib` 目录下即可以。 感觉是因为 python 环境变量 `echo $PYTHONPATH` 中没有包含 `/usr/local/lib` , 但是 我测试将 `/usr/local/lib/python2.7/site-packages/frida-10.0.6-py2.7-macosx-10.12-x86_64.egg` 放到其他不在 `$PYTHONPATH` 列表中的目录也可以工作了。 所以我现在 不确定 将egg 移走原因。
|
.:/usr/lib/python2.7:/Library/Python/2.7/site-packages:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/site-packages:/usr/lib/python2.7/plat-darwin:/usr/lib/python2.7/plat-mac:/Users/xxx/.python/2.7.10/site-packages/:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python:/Users/xxx/.pylib/
➜ Reverse pip –version
pip 9.0.1 from /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)
➜ Reverse frida –version
10.0.6
```
拓展
为Mac 设置Python多版本开发环境 这篇文章 里的 pyenv 我已经使用brew 安装, 看了 作者的介绍,我觉得适合我 测试一些工具。稍后尝试。。。