Je me demande si aussi bien que les packages .deb par exemple, c'est possible dans mon setup.py je configure les dépendances pour mon package, et lance:
$ Sudo python setup.py install
Ils sont installés automatiquement. J'ai déjà fait des recherches sur Internet, mais tout ce que j'ai découvert me laisse perplexe, des choses comme "nécessite", "install_requires" et "requirements.txt"
Une autre solution possible
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"))
Créez simplement requirements.txt
dans votre dossier lib et écrivez toutes les dépendances comme ceci:
gunicorn
docutils>=0.3
lxml==0.5a7
Créez ensuite un setup.py
script et lire le requirements.txt
dans:
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, [...])
L'exécution de python setup.py install
installera votre package et toutes les dépendances. Comme @jwodder l'a dit, il n'est pas obligatoire de créer un requirements.txt
fichier, vous pouvez simplement définir install_requires
directement dans le setup.py
script. Mais écrire un requirements.txt
fichier est une bonne pratique.
Dans la fonction de configuration, vous devez également définir version
, packages
, author
, etc., lisez le document pour un exemple complet: https: // docs. python.org/3.7/distutils/setupscript.html
Le répertoire de votre package ressemblera à ceci:
├── yourpackage
│ ├── yourpackage
│ │ ├── __init__.py
│ │ └── yourmodule.py
│ ├── requirements.txt
│ └── setup.py