为何在Amazon EC2虚拟环境内执行pip freeze无法显示Flask?
解决EC2虚拟环境中pip freeze看不到Flask的问题
我来帮你捋捋这个问题——这大概率是因为你没在激活的虚拟环境里实际安装Flask,而是用--user参数把它装到了全局的用户站点目录里,所以虚拟环境的pip freeze自然看不到它。下面是具体的排查和解决步骤:
第一步:确认虚拟环境是否正确激活
激活虚拟环境后,命令行开头会显示(venv)标记,你也可以通过以下命令验证pip的路径是否属于虚拟环境:(venv) [ec2-user@ip-34-235-217-226 html]$ which pip如果输出是
/var/www/html/venv/bin/pip,说明激活正常;如果不是,重新执行source venv/bin/activate确保环境激活。第二步:在虚拟环境内重新安装Flask(不要加--user)
虚拟环境的核心就是隔离依赖,不需要使用--user参数。直接在激活的环境中执行:(venv) [ec2-user@ip-34-235-217-226 html]$ pip install flask第三步:验证安装结果
安装完成后,再次运行pip freeze,就能看到Flask出现在依赖列表里了:(venv) [ec2-user@ip-34-235-217-226 html]$ pip freeze
额外说明
你之前用--user能看到Flask,是因为虚拟环境外的pip会读取用户全局站点目录的包;而虚拟环境激活后,pip会自动忽略全局和用户站点的依赖,只识别当前虚拟环境内安装的包,这也是虚拟环境实现隔离的关键机制。
内容的提问来源于stack exchange,提问作者RyanH
相关产品推荐
相关产品推荐

