virtualenv环境下pip包安装问题

virtualenv环境下pip包安装问题

创建 python 虚拟环境 virtualenv -p python3 venv并激活它后source venv/bin/activate,我尝试使用 pip command-> 安装 python 包,pip install Flask这会引发权限错误:

Could not install packages due to an EnvironmentError: [Errno 13] 
Permission denied: '/var/www/flask/apnisi/venv/lib/python3.5/site-packages/werkzeug'

pip命令中添加sudo后sudo pip install Flask安装成功;但是,当我pip list安装软件包时,它不显示新安装的软件包。可能是什么问题呢?

答案1

您可能会遇到问题,因为如果您发布的内容准确的话,您似乎没有正确“获取”您的环境。我还建议您指定所使用的 python 版本,以避免同时拥有 python2 和 python3 时出现兼容性问题。如果不是这种情况,请编辑您的问题,该答案可以依次删除或编辑。

创建 python 3 虚拟环境的基础知识是:

python3 -m venv /path/to/virtual/env
source ./path/to/virtual/env/bin/activate

您可能需要venv先安装 ( apt install python3-venv) 并记住您的路径和虚拟环境本身必须是您的用户有权写入的位置。此时您应该处于虚拟环境中 ( (env) user@host:~$ _)。

你不应该需要sudowith pip.使用sudowithpip可在全局/系统范围内安装该软件包。这几乎违背了虚拟环境的目的,即隔离 python 环境以进行开发和测试。参考官方的Python 和有问题的包文档,如果没有正确安装,sudo可能意味着您在虚拟环境中缺少依赖项或其他配置。

在 Debian 9.8 系统 (Linux 4.9.0-8-amd64) 上,运行上述步骤,然后运行以下命令,得到以下结果:

(env) user@host:~$ pip3 install flask
(env) user@host:~$ pip3 list --format=legacy
Click (7.0)
Flask (1.0.2)
itsdangerous (1.1.0)
Jinja2 (2.10)
MarkupSafe (1.1.1)
pip (9.0.1)
pkg-resources (0.0.0)
setuptools (32.3.1)
Wekzeug (0.15.1)
(env) user@host:~$ python3 --version
Python 3.5.3

相关内容