条件:无法pywfdb
从pip
差异条件中排除库/模块安装失败的故障:pywfdb
排除的依赖项失败:upstart
/ Ubuntu 中的systemd
设计错误runit
这里自 Ubuntu >=14.10
设置
- 小路
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
- PYTHONPATH 中空白
$HOME/.bashrc
具有大量日志的依赖项和脏安装的工作流程
埃德温克斯尔的建议:
sudo apt-get install python-pyrex
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: python-pyrex 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 2 not fully installed or removed. Need to get 181 kB of archives. After this operation, 996 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-pyrex all 0.9.8.5-2.1ubuntu1 [181 kB] Fetched 181 kB in 0s (356 kB/s) Selecting previously unselected package python-pyrex. (Reading database ... 434011 files and directories currently installed.) Preparing to unpack .../python-pyrex_0.9.8.5-2.1ubuntu1_all.deb ... Unpacking python-pyrex (0.9.8.5-2.1ubuntu1) ... Processing triggers for doc-base (0.10.7) ... Processing 1 added doc-base file... Registering documents with scrollkeeper... Processing triggers for man-db (2.7.5-1) ... Setting up runit (2.1.2-3ubuntu1) ... - - Setting up python-pyrex (0.9.8.5-2.1ubuntu1) ... - -
脏安装的工作流程,安装后不进行清理,看看
pip
要做什么sudo -H pip install --no-clean pywfdb
Collecting pywfdb Using cached pywfdb-0.1.1.zip Building wheels for collected packages: pywfdb Running setup.py bdist_wheel for pywfdb ... error Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-_Tu9q1/pywfdb/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /tmp/tmpemnpLdpip-wheel- --python-tag cp27: running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-2.7 creating build/lib.linux-x86_64-2.7/pywfdb copying pywfdb/__init__.py -> build/lib.linux-x86_64-2.7/pywfdb copying pywfdb/ecgcodes.py -> build/lib.linux-x86_64-2.7/pywfdb package init file 'example/__init__.py' not found (or not a regular file) creating build/lib.linux-x86_64-2.7/pywfdb/example copying example/readinfo.py -> build/lib.linux-x86_64-2.7/pywfdb/example copying example/plot.py -> build/lib.linux-x86_64-2.7/pywfdb/example running build_ext building 'pywfdb._pywfdb' extension creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/pywfdb creating build/temp.linux-x86_64-2.7/wfdb-10.4.4 creating build/temp.linux-x86_64-2.7/wfdb-10.4.4/lib x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I./wfdb-10.4.4/lib -I/usr/include/python2.7 -c pywfdb/_pywfdb.c -o build/temp.linux-x86_64-2.7/pywfdb/_pywfdb.o -Wno-uninitialized -Wno-unused pywfdb/_pywfdb.c:15:22: fatal error: ecgcodes.h: No such file or directory #include "ecgcodes.h" ^ compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- Failed building wheel for pywfdb Running setup.py clean for pywfdb Failed to build pywfdb Installing collected packages: pywfdb Running setup.py install for pywfdb ... error Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-_Tu9q1/pywfdb/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-gdKcwF-record/install-record.txt --single-version-externally-managed --compile: running install running build running build_py creating build creating build/lib.linux-x86_64-2.7 creating build/lib.linux-x86_64-2.7/pywfdb copying pywfdb/__init__.py -> build/lib.linux-x86_64-2.7/pywfdb copying pywfdb/ecgcodes.py -> build/lib.linux-x86_64-2.7/pywfdb package init file 'example/__init__.py' not found (or not a regular file) creating build/lib.linux-x86_64-2.7/pywfdb/example copying example/readinfo.py -> build/lib.linux-x86_64-2.7/pywfdb/example copying example/plot.py -> build/lib.linux-x86_64-2.7/pywfdb/example running build_ext building 'pywfdb._pywfdb' extension creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/pywfdb creating build/temp.linux-x86_64-2.7/wfdb-10.4.4 creating build/temp.linux-x86_64-2.7/wfdb-10.4.4/lib x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I./wfdb-10.4.4/lib -I/usr/include/python2.7 -c pywfdb/_pywfdb.c -o build/temp.linux-x86_64-2.7/pywfdb/_pywfdb.o -Wno-uninitialized -Wno-unused pywfdb/_pywfdb.c:15:22: fatal error: ecgcodes.h: No such file or directory #include "ecgcodes.h" ^ compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-_Tu9q1/pywfdb/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-gdKcwF-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-_Tu9q1/pywfdb/
打开
- 为什么pywfdb 构建轮子失败?
为什么从完整日志中重现以下错误?
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-_Tu9q1/pywfdb/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-gdKcwF-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-_Tu9q1/pywfdb/
故障排除方法
Pip 本地模块,您看不到wfdb
Adam 的第一个命令集找到的内容
" https://stackoverflow.com/a/23885252/54964 "
['adium-theme-ubuntu==0.3.4', 'alabaster==0.7.8', 'auxlib==0.0.37', 'babel==2.3.4', 'backports-abc==0.4', 'backports.shutil-get-terminal-size==1.0.0', 'backports.ssl-match-hostname==3.5.0.1', 'beautifulsoup4==4.4.1', 'ccsm==0.9.12.2', 'certifi==2016.2.28', 'chardet==2.3.0', 'compizconfig-python==0.9.12.2', 'configparser==3.5.0', 'cycler==0.10.0', 'decorator==4.0.9', 'docutils==0.12', 'duplicity==0.7.6', 'entrypoints==0.2.2', 'enum34==1.1.6', 'functools32==3.2.3.post2', 'futures==3.0.5', 'html5lib==0.999', 'httplib2==0.9.1', 'imagesize==0.7.1', 'ipykernel==4.3.1', 'ipyparallel==5.0.1', 'ipython-genutils==0.1.0', 'ipython==4.2.0', 'ipywidgets==5.1.5', 'jinja2==2.8', 'jsonschema==2.5.1', 'jupyter-client==4.2.2', 'jupyter-core==4.1.0', 'lockfile==0.12.2', 'lxml==3.5.0', 'markupsafe==0.23', 'matlab-kernel==0.9.6', 'matplotlib==1.5.1', 'metakernel==0.13.0', 'mistune==0.7.2', 'nbconvert==4.2.0', 'nbformat==4.0.1', 'nose==1.3.7', 'notebook==4.2.1', 'numpy==1.11.0', 'pandas==0.18.1', 'path.py==8.2.1', 'pathlib2==2.1.0', 'pdfshuffler==0.6.0', 'pexpect==4.1.0', 'pickleshare==0.7.2', 'pillow==3.1.2', 'pip==8.1.2', 'ptyprocess==0.5.1', 'pycosat==0.6.1', 'pycurl==7.43.0', 'pygments==2.1.3', 'pygobject==3.20.0', 'pyicu==1.9.2', 'pymatbridge==0.5.2', 'pymysql==0.7.2', 'pyparsing==2.1.4', 'pypdf==1.13', 'python-dateutil==2.5.3', 'python-djvulibre==0.7', 'pytz==2016.4', 'pyxdg==0.25', 'pyyaml==3.11', 'pyzmq==15.2.0', 'qtconsole==4.2.1', 'requests==2.10.0', 'scour==0.32', 'setuptools==22.0.5', 'simplegeneric==0.8.1', 'singledispatch==3.4.0.3', 'six==1.10.0', 'snowballstemmer==1.2.1', 'sphinx==1.4.3', 'subprocess32==3.2.6', 'terminado==0.6', 'testpath==0.3', 'tornado==4.3', 'traitlets==4.2.1', 'unity-lens-photos==1.0', 'wheel==0.29.0', 'widgetsnbextension==1.2.3']
包/模块/库信息的测试命令不成功
pip search wfdb
给出pywfdb (0.1.1) - Python interface to WFDB library
,所以我希望它还包括您可以使用的模块import
。find /usr/local/lib/python2.7/dist-packages -name '*wfdb*'
返回空白。pip list |grep wfdb
返回空白。pip show pywfdb
返回空白。
测试代码显示未找到该模块
" http://www.pybytes.com/pywfdb/ "
import pywfdb
尝试搜索模块
没有像普通的 python 包一样安装,因为不是
/usr/lib/python<version>/site-packages
按照描述的那样安装的这里;我搜索了所有目录(/usr/local/lib/python2.7/
和/usr/local/lib/python3.5/
)。不是
dist-packages
基于回答。命令ls /usr/local/lib/python2.7/dist-packages/ | grep wfdb
返回空白。>>> import site; site.getsitepackages()
给出输出['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
ls /usr/local/lib/python2.7/dist-packages | grep wfdb
和 的空白输出ls /usr/lib/python2.7/dist-packages | grep wfdb
。
系统:Linux Ubuntu 16.04 64 位
Linux 内核:4.6
Linux 内核选项:wl
硬件:Macbook Air 2013-mid
Python:2.7.11+
Pip:最新 (8.1.2)pip install --upgrade pip
返回Requirement already up-to-date: pip in /home/masi/.local/lib/python2.7/site-packages
最新 pip模块:在 Bashpip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
之前完成
:4.3.46(1)-release (x86_64-pc-linux-gnu)
答案1
扩展上述答案,因为它为我指明了正确的方向,但跳过了一些关键步骤。
免责声明:我不是一个经验丰富的 Linux 用户,但这适用于干净的 DigitalOcean Ubuntu 安装。
依赖项(如果你还没有):
$ sudo apt-get install python-dev python-pip python-pyrex unzip
从以下位置下载 WFDB 源代码
www.physionet.org/physiotools/wfdb.tar.gz
- 解压到
~/
- 解压到
编译并安装 WFDB C 库
@~/wfdb-10.5.24/wfdb$ ./configure --without-netfiles --static --static_only
- (教程位于http://www.pybytes.com/pywfdb/说你需要使用
--without-netfiles
开关;我没有遇到任何问题不是使用它,但无法从 phyonet 导入 python 包装器,所以你应该) @~/wfdb-10.5.24/wfdb$ sudo make install
@~/wfdb-10.5.24/wfdb$ make check
从下载 pywfdb 源
pypi.python.org/packages/source/p/pywfdb/pywfdb-0.1.1.zip
- 解压到
~/
- 解压到
编辑
~/pywfdb-0.1.1/pywfdb/_pywfdb.c
- 替换
\*.h
为<wfdb/*.h>
第 15、16、17 行
- 替换
编辑
~/pywfdb-0.1.1/setup.py
- 在第 14、15 行中替换
./wfdb-10.4.4/
为(或将其提取到的任何位置;别名对我不起作用)/home/username/wfdb-10.5.24/
~/
- 在第 14、15 行中替换
@/usr/include$ ln -s /usr/local/include/wfdb wfdb
@~/pywfdb$ sudo python setup.py install
(上面的答案到此结束,但我需要这个额外的步骤来实际导入 python 中的库)
@/usr/lib/python2.7/dist-packages$ ln -s /usr/local/lib/python2.7/dist-packages/pywfdb pywfdb
答案2
马西,
我终于可以运行这个库了。我的步骤如下:
wfdb-10.5.24
从 phyonet 网站下载- 编译并安装
cd /usr/include sudo ln -s /usr/local/include/wfdb wfdb
sudo apt-get install python-pyrex
使用任何文本编辑器打开此文件
pywfdb/_pywfdb.c
并将这些行替换为:#include <wfdb/ecgcodes.h> #include <wfdb/ecgmap.h> #include <wfdb/wfdb.h>
在第 14 行和第 15 行的文件中放置目录
setup.py
路径wfdb-10.5.24/lib
python setup.py install
Linux:Ubuntu 16.04