提问者:小点点

pip安装失败,对目录的权限被拒绝:OSError:[Errno 13]


pip安装-rrequirements.txt失败,下面的异常OSError:[Errno 13]权限被拒绝:'/usr/本地/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'

共3个答案

匿名用户

与其在pip安装中使用sudo,不如先尝试pip安装--user。如果失败了,那么看看这里的顶部帖子。

您不应该使用sudo的原因如下:

当您使用sudo运行pip时,您正在以root用户的身份从Internet上运行任意Python代码,这是一个相当大的安全风险。如果有人在PyPI上放置了一个恶意项目,并且你安装了它,你就给了攻击者对你的机器的根访问权限。

匿名用户

virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install --user -r requirements.txt

我的建议是使用safe(a)选项,这样该项目的需求就不会干扰其他项目的需求。

匿名用户

您试图在没有权限的情况下在系统范围的路径上安装程序包。

>

  • 通常,您可以使用sudo临时获得超级用户权限,并自行负责,以便在系统范围内的路径上安装软件包:

     sudo pip install -r requirements.txt
    

    在此处查找有关sudo的更多信息

    实际上,这是一个坏主意,没有好的使用案例,请参见@wim的评论。

    如果不想进行系统范围内的更改,可以使用--user标志在每个用户路径上安装该包。

    只需要:

     pip install --user runloop requirements.txt
    

    最后,对于更细粒度的控制,您还可以使用virtualenv,这可能是开发环境的最佳解决方案,特别是当您正在处理多个项目并且希望跟踪每个项目的依赖关系时。

    使用激活您的virtualenv后

    $my virtualenv/bin/activate

    以下命令将在virtualenv内安装软件包(而不是在系统范围的路径上):

    pip安装-r要求。txt

  • 相关问题