2016-02-19 110 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。您可能想告訴他們您的問題,以便他們能夠產生錯誤修復。