pip install failing with: OSError: [Errno 13] Permission denied on directory
pip install failing with: OSError: [Errno 13] Permission denied on directory
pip install -r requirements.txt
失败,例外情况如下 OSError: [Errno 13] Permission denied: '/usr/local/lib/...
。出了什么问题,我该如何解决? (我正在尝试设置 Django)
Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko
Cleaning up...
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install
requirement.install(install_options, global_options, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install
self.move_wheel_files(self.source_dir, root=root)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files
pycompile=self.pycompile,
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber
os.makedirs(destsubdir)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'
您试图在没有权限的情况下在系统范围的路径上安装包。
一般情况下可以使用sudo
临时获取超级用户
权限由您负责,以便在系统范围的路径上安装软件包:
sudo pip install -r requirements.txt
进一步了解 sudo
here。
实际上,这是个坏主意,没有好的用例,请参阅@wim 的评论。
如果您不想在系统范围内进行更改,您可以使用 --user
旗帜。
只需要:
pip install --user runloop requirements.txt
最后,对于更细粒度的控制,您还可以使用virtualenv,这可能是开发环境的最佳解决方案,特别是如果您正在处理 多个项目 并且想要跟踪每个项目的依赖项。
使用
激活你的 virtualenv 之后
$ my-virtualenv/bin/activate
以下命令将在 virtualenv 中安装包(并且 不 在系统范围的路径上):
pip install -r requirements.txt
选项 a) 创建一个 virtualenv,激活它并安装:
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt
选项 b) 安装在您的主目录中:
pip install --user -r requirements.txt
我的建议是使用 safe (a) 选项,这样这个项目的需求就不会干扰其他项目的需求。
与其使用 sudo
和 pip install
,不如先尝试 pip install --user
。如果失败,请查看顶部 post here.
您不应该使用 sudo
的原因如下:
当你运行 pip 与 sudo
时,你是 运行ning 任意 Python 来自 Internet 的代码作为 root 用户,这是相当大的安全风险.如果有人在 PyPI 上发布了一个恶意项目并且你安装了它,你就给了攻击者对你机器的根访问权限。
在 linux(ubuntu 基础上)因权限被拒绝错误而经历了很多痛苦之后,只是澄清对我有用的方法,并利用上面 Bert 的回答,我现在使用 ...
$ pip install --user <package-name>
或者如果 运行 需求文件上的 pip ...
$ pip install --user -r requirements.txt
并且这些对于每个 pip 安装都可靠地工作,包括创建虚拟环境。
但是,根据我进一步的经验,最干净的解决方案是在系统级别安装 python-virtualenv
和 virtualenvwrapper
以及 sudo apt-get install
。
然后,在虚拟环境中,使用不带 --user
标志的 pip install
和不带 sudo
的 。总体上更清洁、更安全、更轻松。
用户没有某些 Python 安装路径的写入权限。您可以通过以下方式授予权限:
sudo chown -R $USER /absolute/path/to/directory
所以你应该给权限,然后再尝试安装它,如果你有新的路径,你也应该给权限:
sudo chown -R $USER /usr/local/lib/python2.7/
因此,由于完全不同的原因,我得到了同样的错误。由于 Google Cloud 的帮助文档中列出了一个完全独立但已知的 Homebrew + pip bug, I had followed this workaround,您可以在主目录中创建一个 .pydistutils.cfg 文件。该文件具有特殊配置,您只应该将其用于安装某些库。我应该在安装软件包后删除那个 disutils.cfg 文件,但我忘了这样做。所以对我来说修复实际上只是...
rm ~/.pydistutils.cfg
。
然后一切正常。当然,如果你出于真正的原因在该文件中有一些配置,那么你不会想要直接 rm 该文件。但万一其他人做了那个解决方法,而忘记删除那个文件,这对我有用!
是权限问题,
sudo chown -R $USER /path to your python installed directory
默认为/usr/local/lib/python2.7/
或尝试,
pip install --user -r package_name
然后说,pip install -r requirements.txt
这将安装在您的环境中
别说,sudo pip install -r requirements.txt
这将安装到任意 python 路径。
如果您需要权限,则不能将 'pip' 与 'sudo' 一起使用。
你可以做一个技巧,这样你就可以使用 'sudo' 并安装包。只需将 'sudo python -m ...' 放在你的 pip 命令前面。
sudo python -m pip install --user -r package_name
pip install -r requirements.txt
失败,例外情况如下 OSError: [Errno 13] Permission denied: '/usr/local/lib/...
。出了什么问题,我该如何解决? (我正在尝试设置 Django)
Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko
Cleaning up...
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install
requirement.install(install_options, global_options, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install
self.move_wheel_files(self.source_dir, root=root)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files
pycompile=self.pycompile,
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber
os.makedirs(destsubdir)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'
您试图在没有权限的情况下在系统范围的路径上安装包。
一般情况下可以使用sudo
临时获取超级用户 权限由您负责,以便在系统范围的路径上安装软件包:sudo pip install -r requirements.txt
进一步了解
sudo
here。实际上,这是个坏主意,没有好的用例,请参阅@wim 的评论。
如果您不想在系统范围内进行更改,您可以使用
--user
旗帜。只需要:
pip install --user runloop requirements.txt
最后,对于更细粒度的控制,您还可以使用virtualenv,这可能是开发环境的最佳解决方案,特别是如果您正在处理 多个项目 并且想要跟踪每个项目的依赖项。
使用
激活你的 virtualenv 之后$ my-virtualenv/bin/activate
以下命令将在 virtualenv 中安装包(并且 不 在系统范围的路径上):
pip install -r requirements.txt
选项 a) 创建一个 virtualenv,激活它并安装:
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt
选项 b) 安装在您的主目录中:
pip install --user -r requirements.txt
我的建议是使用 safe (a) 选项,这样这个项目的需求就不会干扰其他项目的需求。
与其使用 sudo
和 pip install
,不如先尝试 pip install --user
。如果失败,请查看顶部 post here.
您不应该使用 sudo
的原因如下:
当你运行 pip 与 sudo
时,你是 运行ning 任意 Python 来自 Internet 的代码作为 root 用户,这是相当大的安全风险.如果有人在 PyPI 上发布了一个恶意项目并且你安装了它,你就给了攻击者对你机器的根访问权限。
在 linux(ubuntu 基础上)因权限被拒绝错误而经历了很多痛苦之后,只是澄清对我有用的方法,并利用上面 Bert 的回答,我现在使用 ...
$ pip install --user <package-name>
或者如果 运行 需求文件上的 pip ...
$ pip install --user -r requirements.txt
并且这些对于每个 pip 安装都可靠地工作,包括创建虚拟环境。
但是,根据我进一步的经验,最干净的解决方案是在系统级别安装 python-virtualenv
和 virtualenvwrapper
以及 sudo apt-get install
。
然后,在虚拟环境中,使用不带 --user
标志的 pip install
和不带 sudo
的 。总体上更清洁、更安全、更轻松。
用户没有某些 Python 安装路径的写入权限。您可以通过以下方式授予权限:
sudo chown -R $USER /absolute/path/to/directory
所以你应该给权限,然后再尝试安装它,如果你有新的路径,你也应该给权限:
sudo chown -R $USER /usr/local/lib/python2.7/
因此,由于完全不同的原因,我得到了同样的错误。由于 Google Cloud 的帮助文档中列出了一个完全独立但已知的 Homebrew + pip bug, I had followed this workaround,您可以在主目录中创建一个 .pydistutils.cfg 文件。该文件具有特殊配置,您只应该将其用于安装某些库。我应该在安装软件包后删除那个 disutils.cfg 文件,但我忘了这样做。所以对我来说修复实际上只是...
rm ~/.pydistutils.cfg
。
然后一切正常。当然,如果你出于真正的原因在该文件中有一些配置,那么你不会想要直接 rm 该文件。但万一其他人做了那个解决方法,而忘记删除那个文件,这对我有用!
是权限问题,
sudo chown -R $USER /path to your python installed directory
默认为/usr/local/lib/python2.7/
或尝试,
pip install --user -r package_name
然后说,pip install -r requirements.txt
这将安装在您的环境中
别说,sudo pip install -r requirements.txt
这将安装到任意 python 路径。
如果您需要权限,则不能将 'pip' 与 'sudo' 一起使用。 你可以做一个技巧,这样你就可以使用 'sudo' 并安装包。只需将 'sudo python -m ...' 放在你的 pip 命令前面。
sudo python -m pip install --user -r package_name