通过Pip安装PyQuery

12

我正在尝试通过pip安装PyQuery,但是我遇到了一个我不理解的错误。我使用的命令是:

sudo pip install pyquery

我得到以下输出:

Requirement already satisfied (use --upgrade to upgrade): pyquery in /usr/local/lib/python2.7/dist-packages
Downloading/unpacking lxml>=2.1 (from pyquery)
Running setup.py egg_info for package lxml
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'
  warnings.warn(msg)
Building lxml version 3.3.0.
Building without Cython.
ERROR: /bin/sh: 1: xslt-config: not found

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt

Downloading/unpacking cssselect (from pyquery)
Running setup.py egg_info for package cssselect

no previously-included directories found matching 'docs/_build'
Installing collected packages: lxml, cssselect
Running setup.py install for lxml
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'
  warnings.warn(msg)
Building lxml version 3.3.0.
Building without Cython.
ERROR: /bin/sh: 1: xslt-config: not found

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
building 'lxml.etree' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/home/imageek/scripts/facebook/build/lxml/src/lxml/includes -I/usr/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-i686-2.7/src/lxml/lxml.etree.o -w
src/lxml/lxml.etree.c:16:20: fatal error: Python.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
Complete output from command /usr/bin/python -c "import setuptools;__file__='/home/imageek/scripts/facebook/build/lxml/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-dyUZWZ-record/install-record.txt:
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'

warnings.warn(msg)

Building lxml version 3.3.0.

Building without Cython.

ERROR: /bin/sh: 1: xslt-config: not found



** make sure the development packages of libxml2 and libxslt are installed **



Using build configuration of libxslt

running install

running build

running build_py

copying src/lxml/includes/lxml-version.h -> build/lib.linux-i686-2.7/lxml/includes

running build_ext

building 'lxml.etree' extension

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/home/imageek/scripts/facebook/build/lxml/src/lxml/includes -I/usr/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-i686-2.7/src/lxml/lxml.etree.o -w

src/lxml/lxml.etree.c:16:20: fatal error: Python.h: No such file or directory

compilation terminated.

error: command 'gcc' failed with exit status 1

----------------------------------------
Command /usr/bin/python -c "import setuptools;__file__='/home/imageek/scripts/facebook/build/lxml/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-dyUZWZ-record/install-record.txt failed with error code 1
Storing complete log in /home/imageek/.pip/pip.log

我有一种感觉它与依赖项有关,但是 'pip' 不应该自动安装依赖项吗?


如果包中的依赖关系设置正确,它就会执行。 - Maximiliano Rios
这是我的 Python 版本的问题吗?我相信它是 2.6。 - Torra
您的安装正在使用计算机中的2.7版本,请检查 /usr/lib/python2.7。 - Maximiliano Rios
我在2.7中尝试过,但仍然无法工作,输出中有许多错误。 - Maximiliano Rios
无论如何,我刚刚在一台Mac电脑上安装了双重Python安装,它完美地工作了,所以这必须是你的安装中的某些问题。 - Maximiliano Rios
显示剩余4条评论
2个回答

21
您缺少依赖项。请尝试运行以下命令:sudo apt-get install libxml2-dev libxslt1-dev python-dev

它需要哪些库,你怎么知道? - confused00
这也解决了我的问题!@Torra,它解决了你的问题吗? - vitiral

0
将以下代码放入名为pyquery.sh的文件中。
#ADD SWAP FOR lxml COMPILATION
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

#ACTIVATE ENV
#Comment following line if you don't use virtualenv
#source /home/py3/bin/activate

#INSTALL ALL DEP
add-apt-repository -y ppa:ubuntu-toolchain-r/test
apt-get -y update
apt-get -y install gcc
apt-get -y install g++
apt-get -y install build-essential
apt-get -y install python-dev
apt-get -y install libxml2-dev
apt-get -y install libxslt-dev
apt-get -y install libxslt1-dev
apt-get -y install zlib1g-dev
apt-get -y install python3-setuptools
apt-get -y install python3-lxml
apt-get -y install python3-lxml-dbg
apt-get -y install python3-dev

pip install lxml
pip install pyquery

#REMOVE SWAP
swapoff /swapfile
rm -rf /swapfile

之后通过以下方式运行此文件:

source pyquery.sh

在我的情况下,我只是尝试安装 lxml 并遇到了相同的错误。我删除了仓库版本的 python-lxml,即 2.3.2-1ubuntu0.2,然后再次尝试。但这没有任何区别,gcc 的问题仍然存在。(我本来就怀疑会出现这种情况,只是需要确认一下。) - icedwater
现在我已经添加了完整的脚本。 - Adrian B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接