2016-02-19 109 views
1

我想安装h5py包通过pip for python 2.7,我不能使用sudo,我也安装了python 3.2。安装h5py没有sudo

这里是我的学尝试:

我已经安装了PIP:

curl -O https://bootstrap.pypa.io/get-pip.py 
python2.7 get-pip.py --user 

然后我安装wheel

~/.local/bin/pip2.7 install --user wheel

Collecting wheel 
/home/myuser/.local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:315: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning. 
    SNIMissingWarning 
/home/myuser/.local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:120: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 
    InsecurePlatformWarning 
    Using cached wheel-0.29.0-py2.py3-none-any.whl 
Installing collected packages: wheel 
Successfully installed wheel-0.29.0 

然后安装h5py,似乎失败了。通过python2.7

Python 2.7.3 (default, Feb 27 2014, 19:58:35) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import h5py 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/myuser/.local/lib/python2.7/site-packages/h5py/__init__.py", line 23, in <module> 
    from . import _conv 
    File "h5py/h5r.pxd", line 21, in init h5py._conv (/tmp/pip-build-7KTR1Y/h5py/h5py/_conv.c:7356) 
    File "h5py/_objects.pxd", line 12, in init h5py.h5r (/tmp/pip-build-7KTR1Y/h5py/h5py/h5r.c:2941) 
    File "h5py/_objects.pyx", line 1, in init h5py._objects (/tmp/pip-build-7KTR1Y/h5py/h5py/_objects.c:7226) 
ImportError: /home/myuser/.local/lib/python2.7/site-packages/h5py/defs.so: undefined symbol: H5Oexists_by_name 

我做错了什么

~/.local/bin/pip2.7 install --user h5py

Collecting h5py 
    Using cached h5py-2.5.0.tar.gz 
/usr/lib/python2.7/dist-packages/setuptools/command/install_scripts.py:3: UserWarning: Module pip was already imported from /home/myuser/.local/lib/python2.7/site-packages/pip/__init__.pyc, but /usr/lib/python2.7/dist-packages is being added to sys.path 
    from pkg_resources import Distribution, PathMetadata, ensure_directory 
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.6.1 in /usr/lib/python2.7/dist-packages (from h5py) 
Requirement already satisfied (use --upgrade to upgrade): Cython>=0.17 in /home/myuser/.local/lib/python2.7/site-packages (from h5py) 
Requirement already satisfied (use --upgrade to upgrade): six in /home/myuser/.local/lib/python2.7/site-packages (from h5py) 
Building wheels for collected packages: h5py 
    Running setup.py bdist_wheel for h5py ... error 
    Complete output from command /usr/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-7KTR1Y/h5py/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /tmp/tmpE1KVSupip-wheel- --python-tag cp27: 
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] 
    or: -c --help [cmd1 cmd2 ...] 
    or: -c --help-commands 
    or: -c cmd --help 

    error: invalid command 'bdist_wheel' 

    ---------------------------------------- 
    Failed building wheel for h5py 
    Running setup.py clean for h5py 
Failed to build h5py 
Installing collected packages: h5py 
    Running setup.py install for h5py ... done 
Successfully installed h5py-2.5.0 

运行蟒蛇?

更新:

~/.local/bin/pip2.7 show h5py

--- 
Metadata-Version: 1.1 
Name: h5py 
Version: 2.5.0 
Summary: Read and write HDF5 files from Python 
Home-page: http://www.h5py.org 
Author: Andrew Collette 
Author-email: andrew dot collette at gmail dot com 
License: UNKNOWN 
Location: /home/myuser/.local/lib/python2.7/site-packages 
Requires: numpy, Cython, six 

我的操作系统是Ubuntu的LTS 12.04.1。

+0

哪个操作系统?你安装了哪个版本的HDF5? –

+0

@aragilar看到更新。 – mrgloom

+0

这是h5py,而不是HDF5。导入异常抱怨h5py和HDF5之间的连接,这可能是由于某些版本问题。请参阅https://bugs.launchpad。net/ubuntu/+ source/hdf5/+ bug/1418220,这实际上可能是你的问题。 –

回答

0

因此,有几件事情发生在这里:

  1. setuptools没有找到wheel缺少SSL证书的问题(见urllib3链接),这意味着车轮没有建成,所以pip电话python setup.py install直接
  2. h5py正试图在HDF5中使用HDF5中不存在的功能,该功能在您系统上的HDF5版本中不存在。

1和2值得修复(因为它们可能是系统中其他问题的症状),但3是原因h5py不适用于您。

h5py正试图访问H5Oexists_by_name。根据https://www.hdfgroup.org/HDF5/doc/RM/RM_H5O.html#Object-ExistsByName,这首先出现在HDF5的1.8.5版本中。根据http://packages.ubuntu.com/source/precise/hdf5,系统上的HDF5版本是1.8.4(但您需要检查!)。不知何故h5py认为你系统上的HDF5库是1.8.5或更高(见https://github.com/h5py/h5py/blob/4ee8f89b6dc658fdea5dc62d0f29058121928cfe/h5py/h5o.pyx#L172

看起来像别人遇到过类似的问题,并提交https://bugs.launchpad.net/ubuntu/+source/hdf5/+bug/1418220。您可能想告诉他们您的问题,以便他们能够产生错误修复。