2014-09-29 53 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