通过 pip 安装时出错

通过 pip 安装时出错

我正在尝试通过以下命令通过 pip 在 Centos 7 虚拟机上安装 openstack 客户端:

pip install python-openstackclient

安装结束时我收到此错误:

Command "/usr/bin/python3.4 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-noqgbvv4/netifaces/setup.py';f=getattr(tokenize, 'open', open)(_file_);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, _file_, 'exec'))" install --record /tmp/pip-eyssu5xp-record/install-record.txt
--single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-noqgbvv4/netifaces/

任何人都可以帮助我并向我解释问题出在哪里,因为错误消息对我来说不是很清楚。

我在我的个人电脑上使用 kubuntu 安装了 openstack 客户端,它运行没有任何问题。

编辑:我使用 --log 选项运行 pip 。这是最后一个例外

Exception information:
Traceback (most recent call last):
  File "/usr/lib/python3.4/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python3.4/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/usr/lib/python3.4/site-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/usr/lib/python3.4/site-packages/pip/req/req_install.py", line 878, in install
    spinner=spinner,
  File "/usr/lib/python3.4/site-packages/pip/utils/__init__.py", line 707, in call_subprocess
    % (command_desc, proc.returncode, cwd))
pip.exceptions.InstallationError: Command "/usr/bin/python3.4 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-07sbmmn8/netifaces/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-u60jwjmb-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-07sbmmn8/netifaces/

答案1

默认情况下,CentOS 7 只附带 Python 2.7,因此使用 pip 而不是 pip3 只能从 Python 2.7 构建。

您需要启用 EPEL 存储库,然后安装 Python 3.4,然后获取 pip3。

sudo yum install epel-release
sudo yum install python34 python 34-setuptools
sudo easy_install-3.4 pip 

然后回去跑

pip3 install python-openstackclient

我为你做了一些额外的挖掘,结果发现 OpenStack 有一个 CentOS 的存储库(这并不奇怪,因为 RedHat 基本上拥有 OpenStack)。所以你真的需要做

sudo yum install centos-release-openstack-pike 
sudo yum upgrade
sudo yum install python-openstackclient openstack-selinux 

最后一个帮助您在 CentOS 上管理 SELinux。但是,了解如何在 CentOS VM 上获取 Python 3.4 以及必须使用 pip3 来获取 Python 3 pip 包仍然是件好事。

答案2

通过安装python-devel和解决gcc。 @Karaface 的回答也是正确的。目前这两种方式都工作得很好。谢谢。

相关内容