ホームページ  >  記事  >  バックエンド開発  >  Pythonの卵をインストールする方法

Pythonの卵をインストールする方法

藏色散人
藏色散人オリジナル
2019-07-05 09:20:5013828ブラウズ

Pythonの卵をインストールする方法

Python に頻繁に触れる学生は、サードパーティの Python パッケージをインストールする必要がある場合に easy_install コマンドが使用されることに気づくかもしれません。 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-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 のセットアップ関数を使用して、パッケージング情報を構成します。まず、setuptools の機能設定を紹介する必要があります。 setuptools のセットアップは、実際には distutils のセットアップ関数です。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 フォルダーの下に、egg ファイル UNKNOWN-0.0.0-py2.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

5 つの卵情報ファイルを含む EGG-INFO フォルダが 1 つだけありますが、それは消えています。この卵の名前は不明ですが、バージョンは 0.0.0 です。これはセットアップで何も設定していないためです。明らかに、この卵は何もできません。次に、それにいくつかの材料を追加します。 setup.py では、setup 関数は一連のプロパティを構成パラメーターとして受け取ります。

name name は、egg パッケージの名前とパッケージ化されるフォルダーの名前です。デフォルトは UNKNOWN です。

version バージョン番号、デフォルト 0.0.0

packages ここでは setuptools の別の関数、find_packages が使用されます。名前が示すように、find_packages は指定されたディレクトリ内のファイルをパッケージ化するために使用されます。

zip_safe デフォルトは False なので、egg パッケージが生成されるたびにプロジェクト ファイルの内容がチェックされ、それが正しいかどうかが確認されます。

description、long_description、author、author_email、ライセンス、キーワード、プラットフォーム、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 = "amoblin@ossxp.com",
        license = "GPL",
        keywords = ("test", "egg"),
        platforms = "Independant",
        url = "",
        )

egg-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

追加のフォルダー デモがあることがわかります。これには、私たちが作成した __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! インストールが完了しました!」と言う前に、まずインストールして体験してください。次にインポートを通じて直接使用できるようにします。

$ python -c "from demo import test;test()"
Hello, I'm amoblin.

出力が成功しました!これは、インストールが正しいことを意味します。私たちの卵バッグの1つが誕生しました。通常、ソースプログラムは src ディレクトリに置かれるので、次にデモフォルダを src に移動します。ただし、これには、setup.py ファイルを変更し、find_packages 関数のパラメータを 'src' に変更し、package_dir パラメータを追加する必要もあります。

packages=find_packages('src'),
package_dir = {'':'src'}

これにより、setuptools は、元のデフォルトのプロジェクトのルート ディレクトリ。

1.3 Egg ファイルのアンインストール

python2.6 バージョンを例に挙げると、egg ファイルは通常、/usr/local/lib/python2.6/dist-packages/ ディレクトリにインストールされます。インストールされた Egg 情報を保存するために使用される easy-install.pth ファイルもあります。 :

$ 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 ファイルのアンインストールは非常に簡単です。まず、easy-install.pth からこの Egg を含む行を削除してから、egg フォルダーを削除します。

関連する推奨事項: 「

Python チュートリアル

以上がPythonの卵をインストールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。