J'ai un paquet python dont la source ressemble à ceComment les dépendances sont-elles gérées lors du développement d'un paquet python à distribuer sur PyPI?
├── MANIFEST.in
├── README.rst
├── setup.cfg
├── setup.py
└── sqlemon
├── connection_strings.py
└── __init__.py
La plupart du code est en __init__.py
, qui a les importations suivantes:
import os
import sqlemon.connections_strings as sqlcs
import yaml #This is the problem
Si nous courons
python setup.py sdist
nous voyons l'erreur suivante
Traceback (most recent call last):
File "setup.py", line 2, in <module>
import sqlemon
File "/home/danielsank/src/sqlemon/sqlemon/__init__.py", line 4, in <module>
import yaml
ImportError: No module named yaml
Ceci suggère que le virtualenv dans lequel je travaille sur mon projet doit avoir toutes les dépendances du projet installées pour le développement. Je suppose que ce n'est pas déraisonnable, mais je ne suis pas tout à fait sûr de ce que le flux de travail devrait ressembler parce que les dépendances de projet sont répertoriés dans setup.py
:
from distutils.core import setup
import sqlemon
version = sqlemon.__version__
project_name = sqlemon.__project_name__
setup(name=project_name,
# Irrelevant lines removed
install_requires=[
'sqlalchemy',
'alembic',
'pyyaml',
'sqlalchemy-schemadisplay'
],
)
I exigences habituellement mis en requirements.txt
afin que le développeur peut faire pip install -r requirements.txt
, mais puisque les exigences sont déjà dans setup.py
qui semble redondant.
En outre, après avoir téléchargé mon projet sur PyPI, lorsque j'essaye de pip installer à partir de pypi, l'installation échoue sauf si j'ai déjà pyyaml
installé dans mon virtualenv. Évidemment, ce n'est pas le comportement que nous voulons; pyyaml
doit s'installer automatiquement comme indiqué dans la liste install_requires
dans setup.py
.
Quel est le flux de travail recommandé pour cette situation?
Il me semble qu'une option pourrait être de ne pas importer mon propre paquet dans 'setup.py' ... – DanielSank
[Relevant] (https://stackoverflow.com/questions/2058802/how-can-i- get-la-version-définie-dans-setup-py-setuptools-dans-mon-paquet) – DanielSank