在尝试PIP卸载程序包以升级它时,DESCRIPTION.rst文件上的权限被拒绝

时间:2017-12-17 02:18:21

标签: python permissions pip

在尝试PIP卸载程序包以升级程序包时,会收到与名为DESCRIPTION.rst的文件有关的“权限被拒绝”错误。

我最初运行此命令:

pip uninstall twilio

有很多输出,但重要的是:

...
...
  /usr/local/lib/python2.7/site-packages/twilio/version.pyc
Proceed (y/n)? y
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/commands/uninstall.py", line 59, in run
    requirement_set.uninstall(auto_confirm=options.yes)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py", line 1035, in uninstall
    req.uninstall(auto_confirm=auto_confirm)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py", line 598, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py", line 1836, in remove
    renames(path, new_path)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg/pip/util.py", line 295, in renames
    shutil.move(old, new)
  File "/usr/local/lib/python2.7/shutil.py", line 303, in move
    os.unlink(src)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/twilio-3.6.6.dist-info/DESCRIPTION.rst'

Storing debug log for failure in /home/chris/.pip/pip.log
[chris@boogie-dev ~]$ 

我不确定如何解决这个问题。我不太了解PIP,或者python库pakcages的来龙去脉,或者是什么是DESCRIPTION.rst文件,以及为什么它有特殊权限。

我已在sudo下尝试了该命令,但在sudo下无法使用PIP。我不确定这个问题的正确角度是什么:

  • 在sudo帐户下安装pip,然后尝试使用sudo帐户卸载 - 该帐户与最初安装软件包时使用的帐户不同
  • 使用sudo时删除DESCRIPTION.rst文件
  • 其他一些我不了解的优雅方法

2 个答案:

答案 0 :(得分:1)

您可以使用modules下载模块,而不是从python.org下载pip,但在执行此操作时,您应该在root mode

首次运行时

root@achal-PC:~# apt-get install python-pip
...it will install pip tool...

root@achal-PC:~# which pip
/usr/bin/pip

接下来当您安装twilio

root@achal-PC:~# pip install twilio
..Successfully installed twilio PyJWT pytz...

而不是un-installupgrade本身就是

root@achal-PC:~# pip install --upgrade twilio
Requirement already up-to-date: twilio in /usr/local/lib/python2.7/dist-packages
Cleaning up..

我希望它有所帮助。

答案 1 :(得分:0)

我有同样的问题。尝试使用--user标志,例如:pip uninstall --user twilio

就我而言,没有更改了我的软件包的安装/卸载位置,但我的猜测是,它避免了触摸某些保留用于root访问的文件。有关此问题的更多信息:What is the purpose "pip install --user ..."?