无法使用 pip (openSUSE) 安装
Posted
技术标签:
【中文标题】无法使用 pip (openSUSE) 安装【英文标题】:Unable to install with pip (openSUSE) 【发布时间】: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
为您工作了吗?如果是这样,请编辑我的答案或让我知道,因为这将对未来的读者有所帮助。
【参考方案1】:
只有几个可能的问题(在我对问题的评论中列出)。
第一个问题在这里被证明是实际问题,并且可能也是未来搜索者/读者最有可能出现的问题,所以我们只关注它。
如果/home/alex/build
即使对于 root 也不可写,您将从sudo pip
得到这个错误。例如,如果/home
是从 CD 驱动器挂载的,则即使 root 也无法写入 CD-ROM。
人们拥有非根可写主目录的一个常见原因是网络共享。例如,如果你挂载一个 NFS 共享 sqsh_root,你本地的 root
不是 root
到共享,所以它只能写入全局可写目录。如果您挂载 SMB 共享以使用域权限,则 Windows 网络等效项将是正确的。
pip
有许多参数可让您自定义内容。我认为--build
是您想要的,但请尝试pip install --help
来查看所有这些。 (另外,请确保您是最新的。pip
开发人员一直在添加和修复便利/自定义功能,同时等待 Python 打包的近期决定。)
如果最坏的情况发生,您可以在没有sudo
的情况下进行--user
安装,然后使用sudo
将包和egg-info 文件从您的用户站点包移动到系统。
【讨论】:
以上是关于无法使用 pip (openSUSE) 安装的主要内容,如果未能解决你的问题,请参考以下文章
无法从 USB 安装 openSUSE 13.2 - linuxrc 启动
opensuse 11.4 安装ttserver 无法使用问题
使用 pip 安装鼻子,但 bash 无法识别 mac 上的命令