权限被拒绝:'/usr/local/lib/python2.7/dist-packages/pytz-2017.2.dist-info'

权限被拒绝:'/usr/local/lib/python2.7/dist-packages/pytz-2017.2.dist-info'

我尝试安装 Django,pip install Django==1.11.4 但总是遇到这个错误:

Exception:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run
prefix=options.prefix_path,
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 784, in install
**kwargs
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 345, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 316, in clobber
ensure_dir(destdir)
File "/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py", line 83, in ensure_dir
os.makedirs(path)
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/pytz-2017.2.dist-info'

答案1

默认情况下,pip 安装在 中/usr/local,需要 sudo 权限。相反,无论何时使用 Python 模块,都可以使用 virtualenv。这很简单:

  1. 全局安装 Python virtualenv

    sudo pip install virtualenv
    
  2. 创建一个虚拟环境

    virtualenv Venv
    
  3. 激活你的虚拟环境

    source Venv/bin/activate
    
  4. 在虚拟环境中本地安装 Django

    pip install django
    

这样,您就不必担心修改全局 Python 模块,而且更加安全。

答案2

@Sanchit 的回答非常正确。如果您在机器上管理不同的项目,并且不希望一个项目的依赖关系干扰另一个项目,则虚拟环境是最佳选择。

如果您想在没有虚拟环境的情况下使用本地安装的 pip 在系统中安装包,但收到权限被拒绝错误,请尝试仅为当前用户安装包。这可以通过将标志附加--userpip install命令中来完成。

例如:

pip install Django==1.11.4 --user

此外,我不会pip使用权限安装软件包,sudo原因有二:

  1. SUDO 可能并非适用于每个用户。

  2. *SUDO 似乎仅为root用户安装软件包,而不为当前用户安装软件包(至少在我的情况下 - Ubuntu 16.04,OpenStack 云实例)

*可能不适用于你。我发现很难重现。

答案3

Pip 正在尝试将其安装在需要管理员权限的 /usr/local 文件夹中。如果您是管理员并想在那里安装它,请使用 sudo 运行相同的命令:

sudo pip install Django==1.11.4

它会要求您输入密码,仅此而已。

编辑:您也可以使用 pip 的 --user 选项,但它仅适用于当前用户。

相关内容