成功的图

MAC M1 pyenv按照python失败 macbookpro m1 python_查看python安装路径

Mac自然就可以通过brew安装

brew install pwntoolsbrew install binutils

这样安装就可以

如果这样安装很顺利,那就可以遇到下一个问题了。

当你兴高采烈的没有看到报错信息,那肯定是想要试试pwn中的hello world。

于是,你会发现:

>>> import pwnTraceback (most recent call last): File "", line 1, in <module>ImportError: No module named pwn

没有pwn这个模块。

一些教程也许是对的,但那也只是建立在教程所在的环境下,可能也不会告诉你为什么。

如:《mac安装pwntools(python3.8)解决多数问题》

MAC M1 pyenv按照python失败 macbookpro m1 python_配置文件_02

这个答案就是为了解决上面没有找到pwn模块的问题。

按照他的步骤,在相对应目录下,创建pth文件,将模块目录放到该文件内。然后就可以了。但是为什么这样做,pth文件又是什么文件,为啥放在这个目录下。

为什么我会产生这么多问题,是因为我安装失败了。

于是,我看到了这篇文章《python已安装了一个包,但是导入包中的模块时报错没有这个包》

这里引用原文章几句话:

python的搜索路径其实是一个列表,它是指导入模块时,python会自动去找搜索这个列表当中的路径,如果路径中存在要导入的模块文件则导入成功,否则导入失败

当安装第三方模块的时候,如果不是按照标准方式安装,则为了能够引用(import)这些模块,必须将这些模块的安装路径添加到sys.path中,有以下几种方法:

最简单的方法:是在sys.path的某个目录下添加路径配置文件,最常见的就是在…/site-package/目录下。路径配置文件的扩展名是”.pth”,其中的每一行包含一个单独的路径,该路径会添加到sys.path列表中(已验证)。”.pth”中的路径既可以是绝对路径,也可以是相对路径,如果是相对路径,则是相对于包含”.pth”文件的路径而言的。

这就很易懂。

>>> import sys>>> sys.path['', '/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/opt/homebrew/lib/python3.9/site-packages']>>>

通过brew查看pwntools安装信息。

➜  site-packages brew info pwntoolspwntools: stable 4.3.1 (bottled), HEADCTF framework used by Gallopsled in every CTFhttps://github.com/Gallopsled/pwntoolsConflicts with:  moreutils (because both install an `errno` executable)/opt/homebrew/Cellar/pwntools/4.3.1 (8,649 files, 73.9MB) *  Poured from bottle on 2021-01-10 at 13:06:24

得到

/opt/homebrew/Cellar/pwntools/4.3.1/libexec/lib/python3.9/site-packages

然后创建.pth文件

(sys.path中的某一路径:/opt/homebrew/lib/python3.9/site-packages/),将上述内容写入。

MAC M1 pyenv按照python失败 macbookpro m1 python_配置文件_03

再次的通过sys.path查看。

>>> import sys>>> sys.path['',... '/opt/homebrew/Cellar/pwntools/4.3.1/libexec/lib/python3.9/site-packages']

再次尝试引入pwn

MAC M1 pyenv按照python失败 macbookpro m1 python_python_04