Je voudrais faire une distribution binaire de roue, l'installer puis l'importer en python. Mes pas sont
python ./my_package/setup.py bdist_wheel
pip install ./dist/*.whl
python -c "import my_package"
Cela conduit à l'erreur:
ImportError: Aucun module nommé 'my_package'
De plus, lorsque je fais pip list
, le my_package
est répertorié.
Cependant, lorsque j'exécute which my_packge
, rien ne s'affiche.
Quand j'exécute pip install ./my_package/
tout fonctionne comme prévu.
Comment pourrais-je construire et installer correctement une roue?
python version 3.5 pip version 10.1 roue version 0.31.1
MISE À JOUR:
Quand je regarde les fichiers dans my_package-1.0.0.dist-info, il y a une entrée inattendue dans top_level.txt
. C'est le nom du dossier où j'ai couru
python ./my_package/setup.py bdist_wheel
in. Je crois que mon setup.py
est cassé.
MISE À JOUR EN CE QUI CONCERNE LA RÉPONSE ACCEPTÉE:
J'ai accepté la réponse ci-dessous. Pourtant, je pense qu'il vaut mieux simplement cd
dans le répertoire du package. Le passage à un répertoire différent comme suggéré ci-dessous conduit à un comportement inattendu lors de l'utilisation de l'indicateur -d
, c'est-à-dire le répertoire cible où enregistrer la roue. Ce serait relatif au répertoire spécifié dans le fichier setup.py.
3 Réponses :
Si vous devez exécuter le script de configuration à partir d'un autre répertoire, assurez-vous de saisir le répertoire du projet dans le script.
from setuptools import setup root = os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)) os.chdir(root) # or using pathlib (Python>=3.4): import patlib root = pathlib.Path(__file__).parent os.chdir(str(root)) setup(...)
J'ai eu la même erreur, mais c'était dû au fait que mon setup.py ne spécifiait pas l'entrée "packages = setuptools.find_packages ()". Everythings se construit bien sans cela, mais vous ne pouvez rien importer même si pip montre qu'il est installé.
Dans mon cas, pour le résoudre, je devais juste mettre à jour pip (puisque Docker a installé pip 9).
python3 -m pip install --upgrade pip
Avez-vous le module
wheel
?roue d'installation pip
merci @rassar, oui, la roue est installée