2012-05-23 25 views
5

私はパッケージインデックスからdateutilを使用するプログラムを持っています。私はsetup.pyにその存在を確認し、そこになければeasy_installを使って取得しようとしたいと思います。python 3.x distutilsを使ってパッケージをインストールしてインストールするには?

The documentation for distutilsが、これはsetup()requiresキーワードを使用して行うことができることを示していると思われるが、私はしようとすると、警告を与えるか、必要なパッケージをインストールしなくてもdateutilせずに、システムにインストールされます。

私がGoogleで見つけた唯一のものは、回答もなかったthis blog post about the same issueでした。

私はdistutilsを使用していますか? distutils.command.installをサブクラス化し、自分でチェック/インストールする必要がありますか?

答えて

4

依存関係の自動ダウンロードは、setuptoolsによって導入された機能で、distutilsのサードパーティアドオン、特にinstall_requires引数に追加されています。詳細については、setuptools documentationを参照してください。

もう1つの方法は、easy_installをパッケージインストーラとして使用するのではなく、pipでファイルrequirements.txtを使用することです。 pipが推奨インストーラになりました。詳細については、Python Packaging User Guideを参照してください。

更新[2015-01]:この回答の前のバージョンはdistributeのフォークsetuptoolsを参照していました。 distributeフォークはその後、新しいアクティブsetuptoolsプロジェクトにマージされました。 distributeは現在使用できなくなりました。 setuptoolspipはdistutilsのからセットアップ機能で現在、非常に積極的に維持され、サポートはPython 3

+0

使用できませんPEP 345が広く使用されるまでpip要件ファイルまたはsetuptoolsのinstall_requires引数を使用する必要があります(install_requiresが正式にサポートされ、新しい名前require-dist、distutils2がサポートされます)。 –

+0

注:このコメントは古くなっています。配布とsetuptoolsがマージされました。 Setuptoolsは完全な3.xをサポートしています。 – Kevin

+0

@ケビン、思い出してくれてありがとう。元の回答が書かれてから多くの変更がありました。 distutils2の開発の終わり、公式のPythonパッケージインストーラとしての 'pip'の祝福、新しい' Python Packaging User 'という新しい世界の現状を反映する答えを更新しました。ガイド。 –

0

引数install_requiresあるように、私はsdistの分配を作成する場合にのみ、うまく私のために働く:ザ・はdistutilsの中で引数が必要python setup.py sdist

+0

'install_requires'は** distutils.core.setupの引数ではありません。これは[distribute-setuptoolsの余分な引数です](http://pythonhosted.org/distribute/setuptools.html#new-and- changed-setup-keywords)ので、前述の@Nedのように 'setup'の配布版を使う必要があります。また、Pythonで[パッケージ化モジュールの状態を記述するこの回答](http://stackoverflow.com/a/14753678/965798)を見ることもできます。 – marcz

関連する問題