virtualenvにlibxml 2とlibxsltをインストールする

4189 ワード

pythonを使用する作業ではlibxml 2とlibxsltライブラリを使用する必要があります.実環境では既にインストールが完了していましたが、virtualenvではまだ、virtualenvの環境を整理しています.以下virtualenv環境でのインストール手順を記録し、参考にしてください.
1.正常な環境でのインストール
通常のpython環境でこの2つのライブラリをインストールする方法は比較的に簡単で、直接ソースパッケージをダウンロードして、インストールをコンパイルして具体的なインストール手順ができます:1、解凍:$tar zxvf libxml 2-2.7.2.tar.gz 2、解凍後のインストールディレクトリ:$cd libxml 2-2.7.23、インストール三部作:1)$./configure 2)$make 3)$cd python 3)$python setup.py installのインストールが完了しました.とても簡単です.
2.virtualenv環境インストール
次の方法は、仮想環境にインストールすることです.方法は実は大同小異で、わずかな違いにすぎない.
2.1環境情報
環境情報:
  • os:Linux systest 3.13.0-24-generic#46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
  • python:Python 2.7.6
  • GCC:gcc version 4.8.2(Ubuntu 4.8.2-19ubuntu 1)2.2インストールパッケージアドレス2つのライブラリのインストールパッケージをダウンロード:
  • libxml2: ftp://xmlsoft.org/libxml2/libxml2-2.7.2.tar.gz
  • libxslt : http://ftp.acc.umu.se/pub/gnome/sources/libxslt/1.1/libxslt-1.1.22.tar.gz

  • 2.3 libxml 2のインストール
    まずlibxml 2をインストールし、解凍します.仮想環境をアクティブにし、アクティブな仮想環境で操作します.
    cd libxml2-2.7.2/
    ./configure --with-python=~/path/to/your/virtual/env/bin/python
    make
    cd python/
    python setup.py install

    libxml 2はmakeの前にMakefileをいくつか修正する必要があります.詳細は後述のインストール中の問題を参照してください.
    cd libxslt-1.1.22/
    ./configure --with-python=~/path/to/your/virtual/env/bin/python
    make
    cd python/
    sudo make install

    ステップ3:インストール完了の検証
    仮想環境でpythonを入力
    Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import libxml2
    >>> import libxslt
    >>> 

    エラーが報告されていない場合は、インストールに成功したことを示します.
    3.インストールプロセスの問題のまとめ
    3.1 libxsltコンパイル依存libxml 2ライブラリエラー:
    /usr/bin/ld: /usr/local/lib/libxml2.a(entities.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/libxml2.a: error adding symbols: Bad value

    その时、libxml 2ライブラリはすでにインストールされていて、今libxsltライブラリをインストールして、どのようにこのエラーを報告して、ネット上でエラー情報を検索して、この文章(http://blog.csdn.net/zangcf/article/details/21607855)を見つけて、コンパイルする時-fPICパラメータをプラスしていないと言っています.次のパラメータの役割を検索し,−fPICはアドレス依存コードの使用を示す.PIC:Position Independent Code.libxsltコンパイルは、この問題が原因だと思います.それからlibxmlのコンパイルパラメータを修正し、libxmlを再コンパイルしてインストールし、libxsltをコンパイルして、順調に通過しました.
    解決策:libxmlのMakefileの下に-fPICパラメータを追加します.
    CFLAGS = -g -O2 -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wunin     itialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototype     s -Wnested-externs -Winline -Wredundant-decls -fPIC

    -fPICの説明参考:Linux共有オブジェクトのコンパイルパラメータfPIC
    4.ちょっとした疑問や考え
    4.1モジュールのバージョン番号
    インストールが完了したら、virtualenv環境でインストールが成功したかどうかを確認し、pip freezeコマンドを使用して確認します.libxml 2のバージョン番号はlibxml 2-python=2.7.2で、libxsltのバージョン番号は表示されません.env/lib/python2.7/site-packagesのフォルダにlibxmlのegg情報が表示され、libxsltのegg情報はありません.
    私の個人的な推測はlibxml 2ライブラリはpython setupを通じています.py方式でインストールされ、完全なegg-info情報が生成されました.libxsltパッケージはmake installがインストールし、対応するファイルをsite-packagesのディレクトリに直接コピーし、egg-info情報を生成しなかった.libxmlのegg-infoファイル名に従ってファイルtouch libxslt_を作成してみましたpython-1.1.22-py2.7.egg-info
    次にpip freezeコマンドを実行するとlibxsltのバージョン番号情報が表示されることがわかります.バージョン番号を表示する他のいくつかのパケットも同時に観察し,対応するegg情報がある.pipコマンドはegg-infoによってパッケージを管理する必要があります.
    4.2ダイナミックライブラリの呼び出し
    libxml 2とlibxsltはすべてc言語で完成して、pythonの適当な配合をプラスして、site-packagesのフォルダの中で、あります.a .so及び対応する名称の.pyファイル、pythonファイルを開いて表示するのは、pythonが対応するファイルを呼び出して実現したもので、Pythonの接着特性を十分に発揮しています.pythonがダイナミックライブラリの関数を呼び出す方法については、必要に応じて詳しく説明します.