3

私のサーバーには Centos 6 があり、いくつかのパッケージ (モジュール) をインストールしようとしています。Windows のファイルを の ftp クライアントに持ってきました/usr/lib/python2.6/site-packagesが、スクリプトを実行するとそのうちの 1 つ - lxml でエラーが発生します。

File "plugins/util/http.py", line 12, in <module>
    from lxml import etree, html
  File "/usr/lib/python2.6/site-packages/lxml/html/__init__.py", line 12, in <module>
ImportError: cannot import name etree

同じコードが、Windows 7 および Linux Ubuntu 10.04 で完全に機能しました。

このエラーが返される理由を知っている人はいますか? モジュールを Windows から vps の python2.6 ディレクトリに移動しただけです。

@根:

>>> import lxml;print lxml
<module 'lxml' from '/usr/lib/python2.6/site-packages/lxml/__init__.pyc'>
>>>

@ig

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune= atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 - march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/libxml2 -I/tmp/pip-build/lxml/src/lxml/includes -I/usr/インクルード/python2.6 -c src/lxml/lxml.etree.c -o ビルド/temp.linux-i686-2.6/src/lxml/lxml.etree.o

gcc を実行できません: そのようなファイルまたはディレクトリはありません

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

4

2 に答える 2

1

lxml純粋な Python モジュールではありません。ほとんどがCythonで書かれているため、ネイティブ コードにコンパイルされます。Windows マシンのバイナリ ファイルは、CentOS (および一般的な Linux) と互換性がありません。

最善の策は、 のインストールに関する指示lxml従うことです。つまり、libxslt-develおよびlibxml2-develパッケージをインストールし、 を使用pipしてコンパイルするlxmlか、自分で手動でコンパイルします。自分でコンパイルする場合は、前の質問に役立つ情報と詳細情報がlxmlサイトにあります。


インストール

これをテストする CentOS マシンがありません。インストールする最も簡単な方法は、Yum を介してパッケージとして利用できる ip を使用することです。そうでない場合は、次のコマンドを使用してインストールできます ( pip の前提条件であるdistributedのドキュメントから)。

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip

そこから、次を実行します。

pip install lxml

そして、それはうまくインストールされるはずです。

pip をスキップしたい場合 (ただし、最終的には、pip を使用すると依存関係の管理がはるかに簡単になるため、実行する価値があります)

  1. PyPIで適切なバージョンの lxml を見つけます
  2. tar.gzダウンロードURLからソースをダウンロード(ファイルのはず)
  3. を使用して tar アーカイブを抽出します。tar -xzf lxml-<version>.tar.gz
  4. cd抽出されたディレクトリに移動して実行しますpython setup.py install

インストールがルートによってのみ変更可能である場合、上記のコマンドのいずれかをルートとして実行する必要がある場合があることに注意してください。インストール コマンドはpython distribute_setup.pyeasy_install pipおよびpython setup.py installです。

于 2013-01-25T11:25:33.293 に答える