pip 问题 - 由于环境错误,无法安装软件包



我想我在Mac上使用Python和/或pip有一些问题。我在全球范围内安装了 Python 2.7,然后我通常设置 virtualenvs 并安装 Python3.6.4,但在最后一天左右,我遇到了诸如 Fabric 和 SSH2 之类的软件包的问题,我要么无法安装它们与各种错误或当我尝试导入包时抛出的 Fabric。

我现在尝试删除 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('rn', '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

你可以制作 pip 在 virtualenv 库位置安装软件包:

sudo -H venv/bin/pip install fabric

最新更新