python - Pip 问题 - 由于 EnvironmentError 无法安装软件包
问题描述
我认为我的 Mac 上的 Python 和/或 pip 存在一些问题。我已经全局安装了 Python 2.7,然后我通常设置 virtualenvs 并安装 Python3.6.4,但在最后一天左右,我遇到了 Fabric 和 SSH2 等软件包的问题,我要么无法安装它们,要么出现各种错误,要么当我尝试导入包时它抛出的织物。
我现在尝试删除 Fabric 并安装 Fabric3 及其引发的错误,如下所示:
Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Users/david/Documents/projects/uptimeapp/env/lib/python3.6/site-packages/Fabric3-1.14.post1.dist-info'
Consider using the `--user` option or check the permissions.
(env) Davids-MacBook-Air:uptimeapp david$ pip install fabric3 --user
Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
如果我这样做了,sudo pip install fabric
那么它会安装,但会出现以下警告:
The directory '/Users/david/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/david/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
但我认为不建议使用 sudo 进行 pip 安装?
这些是我尝试时遇到的错误pip install ssh2-python
ssh2/agent.c:569:10: fatal error: 'libssh2.h' file not found
#include "libssh2.h"
^~~~~~~~~~~
1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
Command "/Users/david/Documents/projects/uptimeapp/env/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/private/var/folders/bl/97vt48j97zd2sj05zmt4xst00000gn/T /pip-install-mpyq41q4/ssh2-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/bl/97vt48j97zd2sj05zmt4xst00000gn/T/pip-record-qul_k3kq/install-record.txt --single-version-externally-managed --compile - -install-headers /Users/david/Documents/projects/uptimeapp/env/bin/../include/site/python3.6 /ssh2-python" failed with error code 1 in /private/var/folders/bl/97vt48j97zd2sj05zmt4xst00000gn/T/pip-install-mpyq41q4/ssh2-python/
我已经设法删除 Fabric 并使用 sudo 命令安装 Fabric3,但我不想这样做。
我应该补充一点,无论是在 Python2.7 中还是在 envs 中全局安装其他软件包,我都没有遇到任何其他问题。
解决方案
permission denied
引发错误是因为您已经通过使用sudo
. 跑
$ sudo chown -R david:staff /Users/david/Documents/projects/uptimeapp/env
修复权限。如果您有其他权限问题,修复整个主目录的权限也许是明智之举:
$ sudo chown -R david:staff /Users/david/
现在重新安装软件包应该可以再次工作:
$ source /Users/david/Documents/projects/uptimeapp/env/bin/activate
$ (env) pip uninstall -y fabric
$ (env) pip install fabric
'libssh2.h' file not found
意思是在安装之前ssh-python
,需要先安装对应的lib:
$ brew install libssh2
推荐阅读
- regex - 正则表达式仅匹配字符串中的数字
- html - 我的图像没有占据页面的整个宽度
- qt - 极端缩放时巨大的图像撕裂/消失
- android - getitemcount() 在 recyclerview 中使用电影 api 返回 null
- stata - 什么时候在 Stata 中为有效的范围内整数 i 和 j 调用 el(s,i,j) 是非法的?
- angular - 使用 rxjs Angular 和 ngrx 同步处理 Observable 以防止过多的 HTTP 请求超时
- c++ - 修改字符串数组中的字符串
- regex - 替换直到在 PowerShell 中找到模式
- c# - 使用 Microsoft.Build 编译项目:项目的默认命名空间必须是 MSBuild XML 命名空间
- python - 熊猫交叉加入不重复