我使用pip在我的Mac终端上安装各种python包。如果我最后不包括“--用户”,就会不断地通知我,有一个"EnvironmentError: Errno 13权限被拒绝“。但是,如果我最终包括--用户,我可以安装软件包。然而,在其他我使用终端和Python的苹果电脑上,我没有安装软件包的困难,我不需要在最后添加“-user”。
为什么这里有区别?为什么我需要--在我的pip安装命令的末尾为一台Mac笔记本安装命令的用户,而不是其他的呢?
发布于 2018-08-28 22:46:10
pip install spam试图安装到虚拟环境的站点包中。这几乎总是在您有写权限的地方。pip install --user spam试图安装到用户包目录中.这将始终在您的主目录下的某个地方,因此您应该始终对其具有写权限。pip install spam试图将文件安装到站点包目录中以供您安装。这通常不在您的主目录中(通常位于/Library中的某个位置),因此您可能有或可能没有写权限。- Apple's pre-installed Python _does not_ give you write permissions to its site-packages.
- `sudo pip install spam` will let you ignore the permissions by installing as root, although with some Python installations it may cause other problems.
- Homebrew, Python.org, and Anaconda/Miniconda _do_ give you write permissions to their site-packages if you leave the defaults alone.
- Obviously, leave the defaults alone if you know what you're doing.
- Less common ways of installing (Enthought, building from source, MacPorts, etc.), you should read the appropriate docs.
因此,最有可能的是,您在pip install spam工作的机器上使用第三方Python和/或活动虚拟环境,但在不使用苹果预装Python的机器上使用的是预先安装的Python。
虽然您可以通过使用sudo来修复这个问题,但是您可能不想这样做,原因有几点:
easy_install (而不是pip )来维护的,因此更新它们可能会带来巨大的痛苦。因此,一个更好的解决方案是,如果可能的话,安装Homebrew/Anaconda/Python.org Python,并在可能的情况下使用虚拟环境,在可能的情况下使用--user。这三种方法中的任何一种都可以解决您的问题,但您确实应该做到所有这些。
然后,如果你不小心尝试在苹果的网站上安装一些东西--软件包,你会得到一个权限错误--但这是件好事;这意味着你并没有真正改变任何东西,所以你没有什么可撤销的。
https://stackoverflow.com/questions/52066829
复制相似问题