在Kali Linux中使用Python¶
在 Kali Linux 中,默认系统为了兼容性提供的是Python 2,在终端登陆时会提示:
We have kept /usr/bin/python pointing to Python 2 for backwards
compatibility. Learn how to change this and avoid this message:
⇒ https://www.kali.org/docs/general-use/python3-transition/
根据官方文档,Kali Linux已经完全切换到 Python 3,所以任何工具如果还使用Python 2就必须转换使用Python 3,或者就被舍弃掉了。
不过,debian将Python 3使用 /usr/bin/python3
作为解释器入口,如果你的脚本依然使用 python2
执行包,需要修订解释器,否则会出现报错:
zsh: /home/kali/test.py: bad interpreter: /usr/bin/python: no such file or directory
这是因为debian并不提供 /usr/bin/python
作为软链接以避免更新问题。
为避免上述报错,Kali依然提供了默认 Python 2作为解释器,并提供了 /usr/bin/python
软链接指向 python2
➜ ~ ls -lh /usr/bin/python
lrwxrwxrwx 1 root root 7 Mar 2 19:44 /usr/bin/python -> python2
但是,pip for Python2 (也就是 python-pip
)已经没有了,查看 /usr/bin/pip
可以看到解释器实际上是 /usr/bin/python3
,也就是通过 pip
安装的所有模块都是 python3
模块。
上述兼容是通过 kali-linux-headless
建议的 python2
python-is-python2
和 offsec-awae-python2
来实现的,所以默认安装。对于用户希望去除python2则可以删除。
切换到Python3¶
通过删除
python-is-python2
可以消除掉上述提示信息:sudo apt remove python-is-python2
如果你希望转为完全使用Python 3,则安装
python-is-python3
sudo apt install -y python-is-python3
如果你依然希望默认的
/usr/bin/python
指向python2
但是关闭上述警告提示,则可以手工操作:mkdir -p ~/.local/share/kali-motd touch ~/.local/share/kali-motd/disable-old-python-warning
我的实践¶
我在 Kali Linux 环境中决定完全使用Python 3,所以我执行安装 python-is-python3
sudo apt install -y python-is-python3
这个安装将会卸载掉 python-is-python2
软件包,安装以后执行 python
命令可以看到默认python已经是 python 3 了。对于日常运行使用没有影响。
python virtulenv¶
在开发工作中,需要安装很多模块。为了不干扰整个操作系统环境,强烈建议采用 Python virtualenv 来构建一个独立的python运行环境:
sudo apt install python3-venv
cd ~
python3 -m venv venv3
source venv3/bin/activate
然后在这个环境中执行 python
就是最新的的python3环境
如何运行Python 2脚本¶
对于依然是Python 2的脚本,Kali Linux提供了一个 offsec-awae-python2
兼容包,这样就可以使用 pyenv
来设置一个完全隔离的Python 2环境,然后使用 pip 来安装相应 模块,请参考 Using EoL Python versions on Kali