2014-09-29 54 views
4

当运行pip install cryptography我得到以下结果安装Python的加密错误

pip install cryptography 
Downloading/unpacking cryptography 
Running setup.py egg_info for package cryptography 
Traceback (most recent call last): 
    File "<string>", line 16, in <module> 
    File "/tmp/pip-build-root/cryptography/setup.py", line 174, in <module> 
    "test": PyTest, 
    File "/usr/lib64/python2.6/distutils/core.py", line 152, in setup 
    dist.run_commands() 
    File "/usr/lib64/python2.6/distutils/dist.py", line 975, in run_commands 
    self.run_command(cmd) 
    File "/usr/lib64/python2.6/distutils/dist.py", line 995, in run_command 
    cmd_obj.run() 
    File "<string>", line 14, in replacement_run 
    File "/usr/lib/python2.6/site-packages/setuptools/command/egg_info.py", line 254, in find_sources 
    mm.run() 
    File "/usr/lib/python2.6/site-packages/setuptools/command/egg_info.py", line 308, in run 
    self.add_defaults() 
    File "/usr/lib/python2.6/site-packages/setuptools/command/egg_info.py", line 332, in add_defaults 
    sdist.add_defaults(self) 
    File "/usr/lib/python2.6/site-packages/setuptools/command/sdist.py", line 187, in add_defaults 
    build_py = self.get_finalized_command('build_py') 
    File "/usr/lib64/python2.6/distutils/cmd.py", line 319, in get_finalized_command 
    cmd_obj.ensure_finalized() 
    File "/usr/lib64/python2.6/distutils/cmd.py", line 117, in ensure_finalized 
    self.finalize_options() 
    File "/usr/lib/python2.6/site-packages/setuptools/command/build_py.py", line 61, in finalize_options 
    _build_py.finalize_options(self) 
    File "/usr/lib64/python2.6/distutils/command/build_py.py", line 50, in finalize_options 
    ('force', 'force')) 
    File "/usr/lib64/python2.6/distutils/cmd.py", line 305, in set_undefined_options 
    src_cmd_obj.ensure_finalized() 
    File "/usr/lib64/python2.6/distutils/cmd.py", line 117, in ensure_finalized 
    self.finalize_options() 
    File "/tmp/pip-build-root/cryptography/setup.py", line 88, in finalize_options 
    self.distribution.ext_modules = get_ext_modules() 
    File "/tmp/pip-build-root/cryptography/setup.py", line 65, in get_ext_modules 
    from cryptography.hazmat.primitives import constant_time, padding 
    File "cryptography/hazmat/primitives/constant_time.py", line 49, in <module> 
    _ffi = cffi.FFI() 
    File "/tmp/pip-build-root/cryptography/cffi-0.8.6-py2.6-linux-x86_64.egg/cffi/api.py", line 56, in __init__ 
    import _cffi_backend as backend 
ImportError: /tmp/pip-build-root/cryptography/cffi-0.8.6-py2.6-linux-x86_64.egg/_cffi_backend.so: failed to map segment from shared object: Operation not permitted 
Complete output from command python setup.py egg_info: 
running egg_info 

writing requirements to pip-egg-info/cryptography.egg-info/requires.txt 

writing pip-egg-info/cryptography.egg-info/PKG-INFO 

writing top-level names to pip-egg-info/cryptography.egg-info/top_level.txt 

writing dependency_links to pip-egg-info/cryptography.egg-info/dependency_links.txt 

warning: manifest_maker: standard file '-c' not found 

Traceback (most recent call last): 

    File "<string>", line 16, in <module> 

    File "/tmp/pip-build-root/cryptography/setup.py", line 174, in <module> 

    "test": PyTest, 

    File "/usr/lib64/python2.6/distutils/core.py", line 152, in setup 

    dist.run_commands() 

    File "/usr/lib64/python2.6/distutils/dist.py", line 975, in run_commands 

    self.run_command(cmd) 

    File "/usr/lib64/python2.6/distutils/dist.py", line 995, in run_command 

    cmd_obj.run() 

    File "<string>", line 14, in replacement_run 

    File "/usr/lib/python2.6/site-packages/setuptools/command/egg_info.py", line 254, in find_sources 

    mm.run() 

    File "/usr/lib/python2.6/site-packages/setuptools/command/egg_info.py", line 308, in run 

    self.add_defaults() 

    File "/usr/lib/python2.6/site-packages/setuptools/command/egg_info.py", line 332, in add_defaults 

    sdist.add_defaults(self) 

    File "/usr/lib/python2.6/site-packages/setuptools/command/sdist.py", line 187, in add_defaults 

    build_py = self.get_finalized_command('build_py') 

    File "/usr/lib64/python2.6/distutils/cmd.py", line 319, in get_finalized_command 

    cmd_obj.ensure_finalized() 

    File "/usr/lib64/python2.6/distutils/cmd.py", line 117, in ensure_finalized 

    self.finalize_options() 

    File "/usr/lib/python2.6/site-packages/setuptools/command/build_py.py", line 61, in finalize_options 

    _build_py.finalize_options(self) 

    File "/usr/lib64/python2.6/distutils/command/build_py.py", line 50, in finalize_options 

    ('force', 'force')) 

    File "/usr/lib64/python2.6/distutils/cmd.py", line 305, in set_undefined_options 

    src_cmd_obj.ensure_finalized() 

    File "/usr/lib64/python2.6/distutils/cmd.py", line 117, in ensure_finalized 

    self.finalize_options() 

    File "/tmp/pip-build-root/cryptography/setup.py", line 88, in finalize_options 

    self.distribution.ext_modules = get_ext_modules() 

    File "/tmp/pip-build-root/cryptography/setup.py", line 65, in get_ext_modules 

    from cryptography.hazmat.primitives import constant_time, padding 

    File "cryptography/hazmat/primitives/constant_time.py", line 49, in <module> 

    _ffi = cffi.FFI() 

    File "/tmp/pip-build-root/cryptography/cffi-0.8.6-py2.6-linux-x86_64.egg/cffi/api.py", line 56, in __init__ 

    import _cffi_backend as backend 

ImportError: /tmp/pip-build-root/cryptography/cffi-0.8.6-py2.6-linux-x86_64.egg/_cffi_backend.so: failed to map segment from shared object: Operation not permitted 

---------------------------------------- 
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-root/cryptography 
Storing complete log in /root/.pip/pip.log 

我猜他们有毛病一些依赖我失踪?

当我运行sudo yum install gcc libffi-devel python-devel openssl-devel安装了所需要的依赖关系,我得到以下结果

sudo yum install gcc libffi-devel python-devel openssl-devel 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
* base: mirror.econdc.com 
* epel: mirrors.coreix.net 
* extras: centos.hyve.com 
* updates: mirror.sov.uk.goscomb.net 
Setting up Install Process 
Package gcc-4.4.7-4.el6.x86_64 already installed and latest version 
Package libffi-devel-3.0.5-3.2.el6.x86_64 already installed and latest version 
Package python-devel-2.6.6-52.el6.x86_64 already installed and latest version 
Package openssl-devel-1.0.1e-16.el6_5.15.x86_64 already installed and latest version 
Nothing to do 

有没有人有任何建议,我缺少的是什么吗?

+0

'未能从共享对象映射段:操作不permitted'意味着CFFI编译期间创建的临时共享对象是不允许被读取。这可以(显然)在SELinux的某些条件下发生,尽管我从来没有见过它。你运行什么样的分布? – 2014-10-11 03:27:13

+0

在这个问题上的任何更新?我有同样的问题,CentOS 6.4 – fromvega 2014-10-25 20:20:59

+0

这个Ubuntu debian解决方案为我工作http://stackoverflow.com/questions/22073516/failed-to-install-python-cryptography-package-with-pip-and-setup- py – dubis 2016-06-01 09:22:39

回答

1

我遇到了同样的问题,它发生的事情是服务器有/tmp挂载noexec。这导致了各种各样的问题。解决此问题的一种方法是创建一个包含允许执行文件的“/ tmp”目录的“chroot”环境:

请按照this article获取有关如何规避此问题的说明。

  1. 创建一个包含 “/ tmp目录” 目录,允许文件执行的 “chroot的” 环境:

    的mkdir -p /根/ chroot /根/ tmp目录
    安装--bind//根/ chroot的
    安装--bind /根的/ tmp /根/ chroot/tmp目录
    chroot /根/ chroot的

  2. “的chroot” 到您创建的环境:

    chroot/root/chroot

  3. 此时,您处于“chroot”环境并且可以运行任何您需要的命令。

    运行安装目录

  4. 当您完成后,键入以下命令:

    出口

    卸除-l /根/ chroot的

0

而且你可以在没有noexec标志的情况下挂载该卷,将其从/ etc/fstab中移除或执行mount -o remount exec /tmp

fstab解决方案不太安全,它可以被认为是安全漏洞,因为任何人都可以将脚本放在/ tmp并执行它们。

更多信息here

8

chroot环境,并重新安装/tmp是不必要的,因为你正在使用pip提供该选项(pip help install):

-b, --build <dir> Directory to unpack packages into and build in. 

简单的设置,为不具有noexec的目录。

+0

我在共享服务器中,无法更改安装标志。感谢您指出这一点! – boiko 2016-01-06 12:00:05

1

在某些系统上,这应该工作:

TMPDIR=~/tmp pip install cryptography