在VDS上用virtualenv部署Flask应用时遇No module named string错误
搞定Flask导入报错的小妙招
嘿,我来帮你解决这个部署时的导入问题~你遇到的这个报错本质就是当前用的Python环境里没装Flask,或者你启动应用时调用的不是virtualenv虚拟环境里的解释器,结合你的操作步骤,问题大概率出在这几个地方:
1. Alias的“小脾气”——它只在当前会话生效
你用alias python3=/home/web/bin/python3.5设的别名,只能在当前shell窗口里管用,如果后续用脚本或者进程管理工具启动,这个别名根本不会被识别。更关键的是,如果你没激活virtualenv,就算指定了Python3的路径,也加载不到虚拟环境里的依赖包呀!
2. 正确的打开方式应该是这样的
先激活你的虚拟环境(假设你的虚拟环境叫
venv,路径自己调整哦):source /path/to/your/venv/bin/activate激活成功后,命令行前面会多个
(venv)的标记,这时候不管你敲python还是python3,用的都是虚拟环境里的解释器,完全不用额外设alias。激活后先确认Flask已经装了:
pip list | grep Flask如果没看到Flask的条目,就赶紧装一个:
pip install flask最后启动应用就完事了:
python app.py
3. 要是非得用指定的Python3.5创建虚拟环境
如果你因为某些原因必须用/home/web/bin/python3.5来搞虚拟环境,那创建的时候就直接指定这个解释器:
/home/web/bin/python3.5 -m venv /path/to/your/venv
之后激活环境、装依赖、启动应用,这样就不会出现环境不匹配的问题啦。
4. 排查小技巧
要是还是有问题,先搞清楚当前用的是哪个Python:
# 看当前Python3的实际路径 which python3 # 看当前环境装了哪些包 pip freeze
确认输出的路径是你虚拟环境里的Python,而且pip freeze里能看到Flask相关的内容,就没问题啦。
内容的提问来源于stack exchange,提问作者memoricab
相关产品推荐
相关产品推荐

