Kali Linux下Flask运行Python2而非Python3的问题求助
搞定Kali下Flask用Python3的问题
嘿,我完全懂你的困惑——Kali默认钉着Python2确实容易踩坑,而且你说得太对了:绝对别改系统默认的Python版本!很多Kali自带的工具都是依赖Python2的,改了轻则工具失效,重则搞崩系统。不用慌,咱们不用碰系统默认设置,就有几个简单靠谱的办法让Flask跑在Python3.6环境里,完美支持f-string:
方法1:直接指定Python3启动Flask
这是最直接的临时方案,每次运行时明确告诉系统用Python3:
- 如果是直接运行Flask脚本:
python3 your_flask_app.py - 如果用
flask run命令,先设置环境变量再用Python3调用Flask模块:
这样启动的Flask就是跑在Python3.6环境里的,f-string自然能正常识别。export FLASK_APP=your_flask_app.py python3 -m flask run
方法2:用Python3虚拟环境(强烈推荐)
虚拟环境是隔离项目依赖的最佳实践,完全不会影响系统全局的Python设置:
- 先装虚拟环境工具(如果没装的话):
sudo apt install python3-venv - 进到你的Flask项目文件夹,创建一个Python3的虚拟环境:
python3 -m venv venv - 激活这个虚拟环境:
激活后你会看到命令行前面多了个source venv/bin/activate(venv)的标记,这说明现在所有的Python/pip操作都只在这个隔离环境里生效。 - 在虚拟环境里安装Flask:
pip install flask - 现在不管是直接运行脚本还是用
flask run,都是用的Python3.6环境,f-string可以正常工作了。 - 用完虚拟环境想回到系统全局环境,只需要输入:
deactivate
方法3:给脚本加shebang行(适合可执行脚本)
如果你的Flask脚本是打算直接运行的,可以在脚本最顶部加一行shebang,指定用Python3来执行:
#!/usr/bin/env python3 from flask import Flask app = Flask(__name__) @app.route('/') def hello(): username = "Anna" return f"Hello, {username}!" # 现在f-string能正常解析啦 if __name__ == '__main__': app.run()
然后给脚本加上执行权限:
chmod +x your_flask_app.py
之后直接运行脚本就行:
./your_flask_app.py
系统会自动用Python3来执行它,完全不用管系统默认的Python版本。
这几个方法都安全可靠,不用动系统核心设置,赶紧试试吧~
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

