web-dev-qa-db-ja.com

setup.pyから依存関係をインストールする

たとえば.debパッケージと同様に、私のsetup.pyでパッケージの依存関係を構成して実行することは可能ですか?

$ Sudo python setup.py install

それらは自動的にインストールされます。すでにインターネットを調査しましたが、「requires」、「install_requires」、「requirements.txt」など、混乱したままのことがわかりました。

25
adinanp

別の可能な解決策

try:
    # for pip >= 10
    from pip._internal.req import parse_requirements
except ImportError:
    # for pip <= 9.0.3
    from pip.req import parse_requirements

def load_requirements(fname):
    reqs = parse_requirements(fname, session="test")
    return [str(ir.req) for ir in reqs]

setup(name="yourpackage", install_requires=load_requirements("requirements.txt"))

7
Zaytsev Dmitry

Libフォルダーにrequirements.txtを作成し、すべての依存関係を次のように記述します。

gunicorn
docutils>=0.3
lxml==0.5a7

次に、setup.pyスクリプトを作成し、requirements.txtを読み取ります。

import os
thelibFolder = os.path.dirname(os.path.realpath(__file__))
requirementPath = thelibFolder + '/requirements.txt'
install_requires = [] # Examples: ["gunicorn", "docutils>=0.3", "lxml==0.5a7"]
if os.path.isfile(requirementPath):
    with open(requirementPath) as f:
        install_requires = f.read().splitlines()
setup(name="yourpackage", install_requires=install_requires, [...])

python setup.py installを実行すると、パッケージとすべての依存関係がインストールされます。 @jwodderがrequirements.txtファイルを作成することは必須ではないと述べたように、install_requiressetup.pyスクリプトに直接設定することができます。ただし、requirements.txtファイルを作成することをお勧めします。

セットアップ関数では、versionpackagesauthorなども設定する必要があります。完全な例については、ドキュメントを参照してください: https:// docs。 python.org/3.7/distutils/setupscript.html

パッケージdirは次のようになります。

├── yourpackage
│   ├── yourpackage
│   │   ├── __init__.py
│   │   └── yourmodule.py
│   ├── requirements.txt
│   └── setup.py
6
hayj