2012-10-22 6 views
61

注:私はvirtualenvwrapperを使用しています。仮想インストールで `pip install lxml`を動作させることができないのはなぜですか?

仮想環境起動する前に、次の仮想環境活性化した後

$ pip install lxml 
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/lib/python2.7/dist-packages 
Cleaning up... 

を:

(test-env)$ pip install lxml 
force/build/lxml/src/lxml/includes/etree_defs.h:9:31: fatal error: 
libxml/xmlversion.h: No such file or directory 

compilation terminated. 

error: command 'gcc' failed with exit status 1 

---------------------------------------- 
Command /home/chaz/dev/envs/test-with-system-python-force/bin/python2 
.7 -c "import setuptools;__file__='/home/chaz/dev/envs/test-with- 
system-python-force/build/lxml/setup.py';exec(compile(open(__file__). 
read().replace('\r\n', '\n'), __file__, 'exec'))" install --record 
/tmp/pip-bJ6Q_B-record/install-record.txt --single-version-externally 
-managed --install-headers /home/chaz/dev/envs/test-env/include/site/python2.7 failed with error code 1 in 
/home/chaz/dev/envs/test-env/build/lxml 
Storing complete log in /home/chaz/.pip/pip.log 
+1

私は何とかこれが特定のプログラミングに関する質問であるかどうかを確認することができません。 IMHO、これはhttp://www.serverfaultに属します。com –

+4

@ MarkusWMahlberg Virtualenvは非常に一般的なPythonユーティリティで、開発時にプログラマーが主に使用し、配備時にシステム管理者は使用しません。 lxmlは非常に普及しており、この種の問題はまれではありません。私はこれを「プログラマーがよく使うソフトウェアツール」の基準の下で話題にすると考えています。 –

+0

@JeremyBanks私はvirtualenvをよく知っています。しかし、私たちはかなり環境に関連した問題を抱えていると思います。有用な答えを得るチャンスは、serverfaultのほうがはるかに高いはずです。 –

答えて

110

をあなたはおそらくすでにおそらくシステムパッケージにインストールし、システムにインストールさlxmlのを、持っています。したがって、最初の試行(アクティブなvirtualenvのないpip install lxml)は失敗しませんが、インストールもされません。それは本当に何もしません。

virtualenvでは、デフォルトでシステムパッケージは無視されます。したがって、pipはlxmlがインストールされていないと考えます。したがって、仮想環境にインストールしようとします。

lxmlには、正しくインストールするためにコンパイルが必要なCモジュールが含まれています。しかし、これらのCモジュールのコンパイルには、既にインストールされている「開発ライブラリ」が必要です。これらの開発ライブラリはPythonではなくCライブラリであり、pipはインターネットから自動的に取得してインストールすることはできません。

したがって、これらの開発ライブラリは、おそらくパッケージマネージャを使用して自分でインストールする必要があります。 (Ubuntuのような)Debianシステムでは、これはこれは、ローカルシステムにのlibxml2とlibxsltの開発ライブラリをインストールします...

apt-get install libxml2-dev libxslt-dev 

です。 lxmlをインストールしようとすると、Cモジュールのコンパイルステップが機能するはずです。これは、これらの開発ライブラリがシステム上にあるためです。

受け取ったエラーメッセージは、これらのライブラリが見つからなかったためです(エラーメッセージのlibxml/xmlversion.h: No such file or directory部分)。

参照:CentOSのユーザーのためのHow to install lxml on Ubuntu

+1

'lxmlを正常にインストールしました'ありがとう!必要なヘッダーをさまざまな(人気のある)Pythonパッケージにマップする場所が分かっていれば、私は興味があります。私は他の人にも問題があった。また、apt-get python-devは標準ライブラリのヘッダだけを取得しますか? –

+3

ベスト・ベット:見つからないヘッダー・ファイルをGoogleで検索し、他の誰かが同じ問題を抱えていることを願ってください。また、はい、python-devは標準ライブラリのヘッダのみを取得します。 libxml2-devはPythonとは関係ありません。libxml2は、ちょうどPythonライブラリを使って動作するCライブラリです。それはpython-devをインストールしたときにインストールされなかった理由です。それ以外の場合は、基本的には、すべてのPythonライブラリ(lxmlなど)を追加の手順なしで動かすために必要なすべてのヘッダーがあることを確認するために、世界中に存在するすべてのCライブラリをインストールする必要があります –

+0

ロット! – EvertW

18

取得:

error: command 'gcc' failed with exit status 1

DOを:

sudo yum install libxslt-devel libxml2-devel 
5

あなたは、システムレベルでインストールlxmlを持っている、としたい場合0123を使用して作成していないvirtualenvに移行しますの場合、virtualenvdist-packagesフォルダにシンボリックリンクすることができます。あなたのvirtualenv

は、Pythonシェルに:私の場合は

import lxml 
print lxml.__file__ 

、それが/usr/lib/python2.7/dist-packagesで見つかっています。 lxmlフォルダと卵情報ファイルがあります。 virtualenvがどこにあるかは、/lib/python-x.y/dist-packagesフォルダ(dist-packagesを作成する必要があります)に移動し、ライブラリフォルダとeggの両方をシンボリックリンクします。

関連する問題