我尝试安装 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。这很简单:
全局安装 Python virtualenv
sudo pip install virtualenv
创建一个虚拟环境
virtualenv Venv
激活你的虚拟环境
source Venv/bin/activate
在虚拟环境中本地安装 Django
pip install django
这样,您就不必担心修改全局 Python 模块,而且更加安全。
答案2
@Sanchit 的回答非常正确。如果您在机器上管理不同的项目,并且不希望一个项目的依赖关系干扰另一个项目,则虚拟环境是最佳选择。
如果您想在没有虚拟环境的情况下使用本地安装的 pip 在系统中安装包,但收到权限被拒绝错误,请尝试仅为当前用户安装包。这可以通过将标志附加--user
到pip install
命令中来完成。
例如:
pip install Django==1.11.4 --user
此外,我不会pip
使用权限安装软件包,sudo
原因有二:
SUDO 可能并非适用于每个用户。
*SUDO 似乎仅为
root
用户安装软件包,而不为当前用户安装软件包(至少在我的情况下 - Ubuntu 16.04,OpenStack 云实例)
*可能不适用于你。我发现很难重现。
答案3
Pip 正在尝试将其安装在需要管理员权限的 /usr/local 文件夹中。如果您是管理员并想在那里安装它,请使用 sudo 运行相同的命令:
sudo pip install Django==1.11.4
它会要求您输入密码,仅此而已。
编辑:您也可以使用 pip 的 --user 选项,但它仅适用于当前用户。