70

注: virtualenvwrapper を使用しています。

仮想環境をアクティブ化する前に:

$ 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
4

4 に答える 4

133

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

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

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

したがって、ほとんどの場合、パッケージ マネージャーを使用して、これらの開発ライブラリを独自にインストールする必要があります。Debian システム (Ubuntu など) では、これは...

apt-get install libxml2-dev libxslt-dev

これにより、libxml2 および libxslt 開発ライブラリがローカル システムにインストールされます。lxml のインストールを再試行すると、これらの開発ライブラリがシステム上にあるため、C モジュールのコンパイル手順が機能するはずです。

受け取ったエラー メッセージは、これらのライブラリが見つからないという事実によるものです (libxml/xmlversion.h: No such file or directoryエラー メッセージの一部)。

参照: Ubuntu に lxml をインストールする方法

于 2012-10-22T21:14:46.343 に答える
19

centos ユーザーの 場合: 取得時:

エラー: コマンド 'gcc' が終了ステータス 1 で失敗しました

行う:

sudo yum install libxslt-devel libxml2-devel
于 2014-01-14T09:32:53.540 に答える
5

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

の外側virtualenvの python シェルで:

import lxml
print lxml.__file__

私の場合は、 にあり/usr/lib/python2.7/dist-packagesます。lxml フォルダーと Egg-info ファイルがあります。virtualenv がどこにあっても、その/lib/python-x.y/dist-packagesフォルダに移動し (作成する必要がある場合がありますdist-packages)、ライブラリ フォルダと卵の両方をシンボリック リンクします。

于 2014-01-25T20:19:01.103 に答える