8

スクリプトを書いたことがあります。

from lxml import etree

しかし、残念ながら、それはもう機能していません。疑わしいので、次の方法でインストールを確認しました:

sudo apt-get install python-lxml
sudo pip install lxml
sudo apt-get install libxml2-dev
sudo apt-get install libxslt1-dev

それが私のpythonバージョンであるかどうかを確認しました:

me@pc:~$ python
Python 2.7.3 (default, Sep 14 2012, 14:11:57) 
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named lxml

私のOSは、Python 2.7.3を搭載したubuntu 12.04.1 LTSです。

すべて問題ないようです。何が問題なのかわかりません。

4

6 に答える 6

7

lxml.etree の代わりに xml.etree を使用する編集で引用されたソリューションは、これらのモジュールには既知の非互換性があり、主に lxml が確実により最適化されているため、より良い方法ではありません。

クリーンな環境を利用可能にする良い方法は、virtualenvを使用することです:

$ virtualenv myproject
$ cd myproject
$ ./bin/pip install lxml # Repeat this with other dependencies
[wait for download and compiling]

次に、 . /bin/pythonを使用してスクリプトを実行します。この方法の利点は次のとおりです。

  • システムとプロジェクトの間で異なるバージョンの依存関係を持つことができます
  • 仮想環境内のすべてを破壊しても、システムの残りの部分が危険にさらされることはありません
  • インストールを行うのにルート権限は必要ありません

参考までに、これを実現するためのより強力でやや複雑な方法はbuildoutを使用することですが、単純な 1 ファイルのスクリプトを実行したいだけの場合、バズーカでハエを狩るように見える場合があります。

于 2013-01-18T18:13:03.633 に答える
4

問題を解決しました。

インストールしたソフトウェアが私のpythonパスを台無しにしたようです。ターミナルで python を呼び出すときに使用していた python は、ソフトウェアによってインストールされたものであり、スクリプトによって呼び出されたものは、システムにインストールされたものでした。

そのため、bash のパス変数からソフトウェアの python パスを削除しました。

于 2013-01-19T15:38:57.487 に答える