【发布时间】:2013-06-21 01:36:38
【问题描述】:
这个问题已经解决了,我可以安装,但我不明白是什么导致了这个问题
每当我使用 PIP 安装任何软件包时,我都会得到一个 Permission error,如下所示
sudo pip install <packagename>
Downloading/unpacking requests
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 104, in main
status = self.run(options, args)
File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 245, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/usr/lib/python2.7/site-packages/pip/req.py", line 971, in prepare_files
location = req_to_install.build_location(self.build_dir, not self.is_download)
File "/usr/lib/python2.7/site-packages/pip/req.py", line 153, in build_location
_make_build_dir(build_dir)
File "/usr/lib/python2.7/site-packages/pip/req.py", line 1225, in _make_build_dir
os.makedirs(build_dir)
File "/usr/lib64/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/home/alex/build'
我已经开始在我的主目录中创建一个 tmp 目录,使其完全可写,然后按如下方式安装在那里
mkdir temp
chmod 777 temp
cd temp/
sudo pip install packagename
然后工作。知道为什么我必须经历这个吗?
【问题讨论】:
-
至少有 4 件事可能导致此问题:
/home/alex/build即使对于 root 也是不可写的(例如,它是指向只读文件系统上目录的链接);/home/alex不可遍历;/home/alex/build存在且不是目录;/etc/sudoers指定了一些特殊的非 root 但有点超级用户,例如,轮子成员 sudoing pip。如果您想诊断和调试问题,我们需要更多信息(至少ls -ld /home/alex /home/alex/build和cat /etc/sudoers)。如果你只是想克服它,而build中没有任何你需要的东西,那就把它吹走吧。 -
哦,还有一种不太可能的可能性:您可能正在使用专门为非 sudo 使用而配置的
pip,因此它可能会立即删除 root。人们在 virtualenv 的一些前辈中玩过类似的想法,但在那些情况下,脚本用尽了 env 的站点包,而不是系统的;我从来没有听说过这样的事情。为了完整起见,我只想提一下。 -
@abarnert 感谢您的回复 - 我不知道为什么这让我感到困惑,老实说我觉得有点愚蠢 - /home 是一个 NFS 安装目录,没有设置 no_sqsh_root,即本地根没有写权限。我已经知道这一点,并且我一生都无法弄清楚为什么这让我感到困惑......但是,是否可以指定临时
build文件夹的放置位置 - 即sudo pip install --set-build /tmp/build <pckge name>之类的东西? -
也就是说 - 将你写的内容作为答案(并添加一些关于 NSF 的内容,或者我可以编辑并添加它)然后我会接受 - 谢谢。
-
--build为您工作了吗?如果是这样,请编辑我的答案或让我知道,因为这将对未来的读者有所帮助。