質問

誰か説明してくれませんか、それは何ですか setup.py また、どのように設定または使用できるのでしょうか?

役に立ちましたか?

解決

setup.pyは通常、インストールしようとしているモジュール/パッケージは、パッケージとPythonモジュールを配布するための標準であるDistutilsは、一緒に配布されたことを示していますPythonのファイルが、ある。

これは、あなたが簡単にPythonパッケージをインストールすることができます。多くの場合、それは書くために十分です。

$ pip install . 

pipは、あなたのモジュールをインストールするには、setup.pyを使用します。直接setup.pyを呼び出すことは避けてください。

https://docs.python.org/3/installing/ index.htmlを#のインストールインデックス

他のヒント

Python パッケージのインストールに役立ちます foo マシン上 (または virtualenv) パッケージをインポートできるようにします foo 他のプロジェクトや [I]Python プロンプトから。

それは同様の仕事をします pip, easy_install 等。、


使用する setup.py

いくつかの定義から始めましょう。

パッケージ - が含まれるフォルダー/ディレクトリ __init__.py ファイル。
モジュール - 有効な Python ファイル .py 拡大。
分布 - どうやって パッケージ 他に関係する パッケージ そして モジュール.

という名前のパッケージをインストールするとします。 foo. 。そうすれば、

$ git clone https://github.com/user/foo  
$ cd foo
$ python setup.py install

実際にインストールしたくないが、使用したい場合は、代わりに。それから、そうしてください、

$ python setup.py develop  

このコマンドは、内容をコピーするのではなく、サイト パッケージ内のソース ディレクトリへのシンボリック リンクを作成します。このため、非常に高速です (特に大きなパッケージの場合)。


作成 setup.py

次のようなパッケージツリーがある場合、

foo
├── foo
│   ├── data_struct.py
│   ├── __init__.py
│   └── internals.py
├── README
├── requirements.txt
└── setup.py

次に、次の操作を行います setup.py スクリプトを作成して、マシンにインストールできるようにします。

from setuptools import setup

setup(
   name='foo',
   version='1.0',
   description='A useful module',
   author='Man Foo',
   author_email='foomail@foo.com',
   packages=['foo'],  #same as name
   install_requires=['bar', 'greek'], #external packages as dependencies
)

代わりに、パッケージ ツリーが以下のように複雑な場合は、次のようになります。

foo
├── foo
│   ├── data_struct.py
│   ├── __init__.py
│   └── internals.py
├── README
├── requirements.txt
├── scripts
│   ├── cool
│   └── skype
└── setup.py

それから、あなたの setup.py この場合は次のようになります:

from setuptools import setup

setup(
   name='foo',
   version='1.0',
   description='A useful module',
   author='Man Foo',
   author_email='foomail@foo.com',
   packages=['foo'],  #same as name
   install_requires=['bar', 'greek'], #external packages as dependencies
   scripts=[
            'scripts/cool',
            'scripts/skype',
           ]
)

さらに内容を追加します (setup.py) & それをまともなものにします:

from setuptools import setup

with open("README", 'r') as f:
    long_description = f.read()

setup(
   name='foo',
   version='1.0',
   description='A useful module',
   license="MIT",
   long_description=long_description,
   author='Man Foo',
   author_email='foomail@foo.com',
   url="http://www.foopackage.com/",
   packages=['foo'],  #same as name
   install_requires=['bar', 'greek'], #external packages as dependencies
   scripts=[
            'scripts/cool',
            'scripts/skype',
           ]
)

long_description で使用されています pypi.org パッケージの README の説明として。


そして最後に、パッケージをアップロードする準備が整いました。 PyPi.org 他の人が次を使用してパッケージをインストールできるようにする pip install yourpackage.

最初のステップは、以下を使用して pypi でパッケージ名とスペースを要求することです。

$ python setup.py register

パッケージ名が登録されると、誰もそれを主張したり使用したりできなくなります。登録が成功したら、次の方法でパッケージをそこ (クラウド) にアップロードする必要があります。

$ python setup.py upload

オプションで、パッケージに署名することもできます GPG による、

$ python setup.py --sign upload

ボーナス:サンプルを見る setup.py ここの実際のプロジェクトから: torchvision-setup.py

setup.pyは、マルチプラットフォームのインストーラとmakeファイルへのPythonの答えです。

あなたは、コマンドラインのインストールに精通している場合、

、そしてmake && make installpython setup.py build && python setup.py installに変換されます。

いくつかのパッケージは、Python純粋であり、そして唯一のバイトがコンパイルされています。その他(gcc又はcl等)ネイティブコンパイラを必要とするネイティブコード、及び(swig又はpyrexなど)Pythonのインターフェースモジュールを含んでいてもよい。

あなたがルートフォルダに「setup.py」を持っているパッケージをダウンロードした場合、あなたが実行してインストールすることができます。

python setup.py install
プロジェクトを開発していると、このファイルは便利ですかと思っている場合は、

、上の Pythonドキュメントをチェックセットアップを書いてスクリプトする

setup.pyは、その言語で書かれた、通常のライブラリやプログラムに同梱されているPythonスクリプトです。これは、ソフトウェアが正しくインストールされ目的です。

多くのパッケージはdistutilsと接続詞でsetup.pyフレームワークを使用します。

http://docs.python.org/distutils/する

setup.pyは、2つのシナリオで使用することができ、第一に、あなたは、Pythonパッケージをインストールします。第二に、あなたはあなた自身のPythonパッケージを作成したいです。通常、標準のPythonパッケージはsetup.py、のsetup.cfgとManifest.inなどの重要なファイルのカップルを持っています。あなたがPythonパッケージを作成している場合は、これらの3つのファイルが(卵インフォフォルダの下PKG-INFOの内容)名、バージョン、説明、(通常は.txtファイルで)他の必要なインストールや他のいくつかのパラメータを決定します。パッケージが作成されている間のsetup.cfgは(tar.gz形式かもしれない)setup.pyによって読み取られます。あなたは、パッケージに含まれるべきものを定義することができる場所Manifest.inです。とにかく、あなたは

のようにsetup.pyを使用して原料の束を行うことができます
python setup.py build
python setup.py install
python setup.py sdist <distname> upload [-r urltorepo]  (to upload package to pypi or local repo)

setup.pyで使用することができ、他のコマンドの束があります。助けのための

python setup.py --help-commands

あなたはsetup.pyでパッケージをダウンロードすると、あなたのターミナル(Mac用、Linux)またはコマンドプロンプト(Windows)を開きます。 cdを使用すると、タブのボタンであなたを支援することは右のファイルをダウンロードし、setup.pyがあるしているフォルダへのパスを設定します:

iMac:~ user $ cd path/pakagefolderwithsetupfile/

を押して、あなたがこのようなものが表示されるはず、入力します:

iMac:pakagefolderwithsetupfile user$

次に、このpython setup.py install後に入力します:

iMac:pakagefolderwithsetupfile user$ python setup.py install

を押しenter。完了!

あなたがダウンロードしたPythonパッケージをインストールするには、アーカイブを解凍し、内部のsetup.pyスクリプトを実行します:

python setup.py install

私にとって、これは常に奇妙に感じました。 1は、RubyやNodejsに行うように例えば、ダウンロード時にパッケージマネージャを指すように、より自然だろう。 gem install rails-4.1.1.gem

それは身近で信頼性の高いですので、

パッケージマネージャは、あまりにもより快適です。それがパッケージに固有なので一方、各setup.pyは、新規です。それは「私はこのsetup.pyは、私が過去に使用している他の人と同じコマンドを取る信頼」大会への信仰が求められています。それは精神的な意志の力に残念税です。

私は(私はピップがちょうど内部setup.pyを実行し理解)setup.pyワークフローは、パッケージマネージャよりも安全であるとは言わないよ、確かに私はそれがawkardと耳障りだと感じ。コマンドはすべて同じパッケージマネージャアプリケーションにあることに調和があります。あなたもそれを好きに育つかもしれません。

setup.py 他のファイルと同様の Python ファイルです。慣例による名前を除いて、任意の名前を付けることができます。 setup.py そのため、各スクリプトで異なる手順が発生することはありません。

最も頻繁に setup.py Python モジュールをインストールするために使用されますが、他の目的にも使用されます。

モジュール:

おそらくこれが最も有名な使用法です setup.py モジュール内にあります。を使用してインストールできますが、 pip, 、古い Python バージョンには含まれていませんでした。 pip デフォルトでは、それらは個別にインストールする必要がありました。

モジュールをインストールしたかったがインストールしたくない場合 pip, 、ほぼ唯一の代替手段は、からモジュールをインストールすることでした setup.py ファイル。これは次の方法で実現できます。 python setup.py install. 。これにより、Python モジュールがルート辞書にインストールされます ( pip, easy_install など)。

この方法は、次のような場合によく使用されます。 pip 失敗します。たとえば、目的のパッケージの正しい Python バージョンが次の方法で入手できない場合、 pipおそらく、もうメンテナンスされていないため、ソースをダウンロードして実行しています python setup.py install コンパイルされたバイナリが必要な場合を除いて、同じことを実行します (ただし、エラーが返されない限り、Python のバージョンは無視されます)。

別の使い方 setup.py ソースからパッケージをインストールすることです。モジュールがまだ開発中の場合、ホイール ファイルは利用できず、インストールする唯一の方法はソースから直接インストールすることです。

Python 拡張機能の構築:

モジュールが構築されたら、次のコマンドを使用して、配布可能なモジュールに変換できます。 distutils セットアップ スクリプト. 。構築したら、上記のコマンドを使用してインストールできます。

セットアップ スクリプトは簡単に構築でき、ファイルが適切に設定されたら、次のコマンドを実行してコンパイルできます。 python setup.py build (すべてのコマンドについてはリンクを参照してください)。

またしても名付けられました setup.py 使いやすさと慣例により、任意の名前を付けることができます。

サイソン:

もう一つの有名な使い方は、 setup.py ファイルにはコンパイルされた拡張子が含まれています。これらには、ユーザー定義の値を含むセットアップ スクリプトが必要です。これらにより、高速な実行が可能になります (ただし、コンパイル後の動作はプラットフォームに依存します)。以下に簡単な例を示します。 ドキュメンテーション:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = 'Hello world app',
    ext_modules = cythonize("hello.pyx"),
)

これは次のようにしてコンパイルできます python setup.py build

Cx_フリーズ:

セットアップ スクリプトを必要とする別のモジュールは次のとおりです。 cx_Freeze. 。これにより、Python スクリプトが実行可能ファイルに変換されます。これにより、説明、名前、アイコン、パッケージなどの多くのコマンドを含めたり除外したりすることができ、実行すると配布可能なアプリケーションが生成されます。からの例 ドキュメンテーション:

import sys
from cx_Freeze import setup, Executable
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} 

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "guifoo",
        version = "0.1",
        description = "My GUI application!",
        options = {"build_exe": build_exe_options},
        executables = [Executable("guifoo.py", base=base)])

これは次のようにしてコンパイルできます python setup.py build.

それで、とは何ですか setup.py ファイル?

簡単に言えば、これは Python 環境で何かを構築または構成するスクリプトです。

配布時のパッケージにはセットアップ スクリプトを 1 つだけ含める必要がありますが、複数のセットアップ スクリプトを 1 つのセットアップ スクリプトに結合することも珍しくありません。これには多くの場合、次のようなことが含まれることに注意してください distutils しかし、常にそうとは限りません (最後の例で示したように)。覚えておくべきことは、Python パッケージ/スクリプトを何らかの方法で設定するだけです。

名前を取得するので、ビルドまたはインストール時に常に同じコマンドを使用できます。

簡単にするために、setup.py は次のように実行されます。 "__main__" 電話をかけるとき 機能をインストールする 他の回答も言及しました。setup.py 内には、パッケージのインストールに必要なものをすべて入れる必要があります。

一般的な setup.py 関数

次の 2 つのセクションでは、多くの setup.py モジュールが持つ 2 つのことについて説明します。

セットアップツール.セットアップ

この機能を使用すると、次のことを指定できます。 プロジェクトの属性 プロジェクト名やバージョンなど...最も重要なのは、この機能を使用すると、他の機能が適切にパッケージ化されていればそれらをインストールできるということです。見る このウェブページ setuptools.setup の例

setuptools.setup のこれらの属性により、次のタイプのパッケージのインストールが可能になります。

  • プロジェクトにインポートされ、リストされるパッケージ PyPI を使用して setuptools.findpackages:

    packages=find_packages(exclude=["docs","tests", ".gitignore", "README.rst","DESCRIPTION.rst"])

  • 入っていないパッケージ PyPI, 、ただし、次を使用して URL からダウンロードできます。 依存関係_リンク

    dependency_links=["http://peak.telecommunity.com/snapshots/",]

カスタム機能

理想的な世界では、 setuptools.setup あなたの代わりにすべてを処理します。残念ながら、常にそうとは限りません。依存関係をインストールするなど、特定のことを行う必要がある場合があります。 サブプロセス コマンドを使用して、インストール先のシステムをパッケージに適した状態にします。これらの関数は混乱を招き、多くの場合、次の関数と次の関数の間で異なるため、これを避けるようにしてください。 OS そしてさらに 分布.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top