python-eggパッケージのいくつかの知識

6274 ワード

Pythonに頻繁に接する人は、サードパーティ製pythonパッケージをインストールする必要がある場合にeasy_を使用する可能性があることに気づくかもしれません.インストールコマンド.easy_Installは、PEAK(Python Enterprise Application Kit)が開発したsetuptoolsパッケージに付いているコマンドで、eggパッケージをインストールするために使用されます.eggパッケージは、現在最も流行しているpythonアプリケーションのパッケージ配置方法です.eggパッケージの作成とインストール方法簡単に分析してみました.
1.1 setuptoolsをインストールするには、まずsetuptoolsツールをインストールします.Debian/Ubuntuではaptを直接使用してインストールできます.
$ sudo apt-get install python-setuptools
手作業でインストールすると、2つの方法があります.
  • ブートez_を介してsetup.pyでインストールします.このブートストラップは、最新バージョンのsetuptoolsをオンラインでダウンロードしてインストールし、ローカルのsetuptoolsを更新することもできます.
    $ wget http://peak.telecommunity.com/dist/ez_setup.py
    $ sudo python ez_setup.py
    更新setuptools::
    $ sudo python ez_setup.py -U setuptools
  • またはsetuptoolsのeggパッケージをダウンロードしてインストールします.ここで最新バージョンのダウンロードを見ることができます.ダウンロードが完了したらshでインストールします.
    $ wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg
    $ sudo sh setuptools-0.6c11-py2.6.egg

  • easy_を使用できるようになりましたInstallコマンドで他のeggパッケージをインストールしました.
    1.2自分のeggバッグを作るにはいつも他の人のeggバッグをインストールして、自分のeggバッグも作りたいのではないでしょうか.はい、次は自分で簡単なeggバッグを作ります.まず工程ディレクトリegg-demoを確立し、setupを初期化する.pyファイル:
    $ mkdir egg-demo
    $ cd egg-demo
    $ touch setup.py
    $ ls
    setup.py
    以下は主に充填setupである.py.setup.pyは実はpythonツールパッケージdistutilsのプロファイルで、setuptoolsはdistutilsに基づいて作られています.setup.pyではsetup関数でパッケージ情報を構成します.まずsetuptoolsの関数setupを導入します.setuptoolsのsetupは実はdistutilsのsetup関数で、setupを記入します.pyは次のとおりです.
    $ cat setup.py
    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    from setuptools import setup
    
    setup()
    ここに書くと、空のeggプロファイルが作成されます.次のコマンドを使用してeggパッケージを生成できます.
    $ python setup.py bdist_egg
    次に、何が生成されたかを見てみましょう.
    $ ls -F
    build/ dist/ setup.py UNKNOWN.egg-info/
    には、3つ以上のフォルダが表示されます.distフォルダの下には、UNKNOWN-0.0.0-py 2というeggファイルがあります.6.egg. 産卵成功!まず、このeggファイルのフォーマットを見てみましょう.
    $ file dist/UNKNOWN-0.0.0-py2.6.egg
    dist/UNKNOWN-0.0.0-py2.6.egg: Zip archive data, at least v2.0 to extract
    ああ、zip圧縮パッケージだったのか.では、内部構造を見てみましょう.
    $ unzip -l dist/UNKNOWN-0.0.0-py2.6.egg
    Archive:  dist/KNOWN-0.0.0-py2.6.egg
      Length      Date    Time    Name
    ---------  ---------- -----   ----
          120  2010-12-06 17:04   EGG-INFO/SOURCES.txt
            1  2010-12-06 17:04   EGG-INFO/top_level.txt
            1  2010-12-06 17:04   EGG-INFO/zip-safe
            1  2010-12-06 17:04   EGG-INFO/dependency_links.txt
          227  2010-12-06 17:04   EGG-INFO/PKG-INFO
    ---------                     -------
          350                     5 files
    EGG-INFOフォルダが1つしかありません.egg情報ファイルが5つ含まれています.ありません.このegg名は不明で、バージョンは0.0.0です.これは私たちがsetupで何も設定していないからです.明らかに、このeggは何もできません.次に材料を少し入れます.setup.pyでは、setup関数は構成パラメータとして一連の属性を受信します.
  • name nameはeggパッケージの名前であり、パッケージするフォルダを探す名前でもあり、デフォルトはUNKNOWNです.
  • バージョン番号、デフォルト0.0.0
  • packagesここではsetuptoolsの別の関数find_を使用します.packages,その名の通りfind_packagesは、指定したディレクトリの下にあるファイルをパッケージ化するために使用します.
  • zip_safeのデフォルトはFalseです.これにより、eggパッケージが生成されるたびにプロジェクトファイルの内容がチェックされ、間違いがないことを確認できます.

  • description,long_などの記述的な属性もありますdescription,author,author_Email,license,keywords,platform,urlなど.埋め込みsetup.pyファイルは次のとおりです.
    $ cat setup.py
    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    from setuptools import setup, find_packages
    
    setup(
            name = "demo",
            version="0.1.0",
            packages = find_packages(),
            zip_safe = False,
    
            description = "egg test demo.",
            long_description = "egg test demo, haha.",
            author = "amoblin",
            author_email = "[email protected]",
    
            license = "GPL",
            keywords = ("test", "egg"),
            platforms = "Independant",
            url = "",
            )
    egg-demoディレクトリの下に上記name名と同じディレクトリdemoを作成し、demoディレクトリの下に__を書きます.init__.pyファイル:
    $ mkdir demo
    $ cat demo/__init__.py
    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    def test():
        print "Hello, I'm amoblin."
    
    if __name__ == '__main__':
        test()
    eggパケットを再生成した後、eggパケット情報を表示します.
    $ python setup.py bdist_egg
    $ unzip -l dist/demo-0.1.0-py2.6.egg
    Archive:  dist/demo-0.1.0-py2.6.egg
      Length      Date    Time    Name
    ---------  ---------- -----   ----
          121  2010-12-06 17:30   demo/__init__.py
          344  2010-12-06 17:46   demo/__init__.pyc
          137  2010-12-06 17:46   EGG-INFO/SOURCES.txt
            5  2010-12-06 17:46   EGG-INFO/top_level.txt
            1  2010-12-06 17:46   EGG-INFO/zip-safe
            1  2010-12-06 17:46   EGG-INFO/dependency_links.txt
          227  2010-12-06 17:46   EGG-INFO/PKG-INFO
    ---------                     -------
          836                     7 files
    には、フォルダdemoが1つ増えていて、私たちが書いた_が入っています.init__.py. 敏捷な原則を奉行して、まずインストールして体験してからにします.
    $ sudo python setup.py install
    running install
    install_dir /usr/local/lib/python2.6/dist-packages/
    ...
    creating /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg
    Extracting demo-0.1.0-py2.6.egg to /usr/local/lib/python2.6/dist-packages
    demo 0.1.0 is already the active version in easy-install.pth
    
    Installed /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg
    Processing dependencies for demo==0.1.0
    Finished processing dependencies for demo==0.1.0
    OK!インストール完了!これからはimportで直接使えます!
    $ python -c "from demo import test;test()"
    Hello, I'm amoblin.
    出力成功!これはインストールが正しいことを示しています.私たちのeggバッグが誕生しました.一般的に、私たちのソースプログラムはsrcディレクトリの下に置かれているので、次にdemoフォルダをsrcに移動します.それでもsetupを修正します.pyファイル、find_の変更packages関数のパラメータは'src'であり、packages_を追加します.dirパラメータ:
    packages=find_packages('src'),
    package_dir = {'':'src'}
    は、デフォルトのエンジニアリングルートディレクトリではなく、setuptoolsにsrcディレクトリの下でパッケージを探すように伝えます.
    1.3 eggファイルをpython 2でアンインストールします.6バージョンを例にとると、eggファイルは一般的に/usr/local/lib/python 2にインストールされます.6/dist-packages/ディレクトリの下にeasy-installがあります.pthファイル.インストールされたegg情報を格納します.:
    $ cd /usr/local/lib/python2.6/dist-packages
    $ cat easy-install.pth|grep demo
    ./demo-0.1.0-py2.6.egg
    $ ls -F|grep demo
    demo-0.1.0-py2.6.egg/
    eggファイルをアンインストールするのは簡単で、まずこのeggを含む行をeasy-installからアンインストールする.pthで削除し、eggフォルダを削除すればいいです.