J'utilise le mathematical modelling packagecoopr.pyomo
avec succès dans les deux fichiers de script et de manière interactive sur la console ipython. Cependant, si je tente un import coopr.pyomo
simple dans un bloc-notes IPython commencé par ipython notebook
, je reçois le message d'erreur suivant:Erreur d'importation dans le bloc-notes IPython uniquement avec coopr.pyomo
ImportError Traceback (most recent call last)
<ipython-input-1-ff8219fceacd> in <module>()
----> 1 import coopr.pyomo
ImportError: No module named pyomo
Autres importations (les deux buitlins et emballages personnalisés) fonctionnent sans problème. Des idées où chercher une cause?
Environnement: Python 2.7 (32 bits) sur Windows 7, IPython 0.13.2, version 3.2.6148 de Coopr.
Edit: plus le diagnostic
En effet, coopr peut être importé, n'a pas encore __file__
attribut. Si j'affiche __dict__
, je reçois le bon chemin:
{'__name__': 'coopr',
'data': <module 'coopr.data' (built-in)>,
'__doc__': None,
'__path__': ['C:\\Python27\\lib\\site-packages\\coopr']}
Si je navigue dans ce répertoire, je trouve que tous les sous-modules (par exemple coopr.pyomo) se trouvent dans le sous-répertoire src
. data
semble être un faux répertoire avec quelques fichiers test (test_baselines.py, test_perf.py) et exemple (diet1.py).
Edit # 2: il devient plus (je pense)
La question semble être causé par la façon particulière la façon dont les fenêtres d'installation des œuvres Coopr. Selon le Installation Notes, Coopr est encapsulé dans son propre bac à sable virtuel. Ceci est souligné par sa suggestion de répertoire d'installation par défaut CH: = C:/Packages/Coopr
. La dernière fois, j'ai ignoré ce signe et l'ai simplement installé dans le dossier site-packages
de Python. Maintenant, pour tester, j'ai réinstallé Coopr dans ce répertoire externe. Coopr/Pyomo peut toujours être importé avec succès à partir d'une session (I) Python, car sys.path
est étendu par tous les sous-répertoires du répertoire CH/src/
.
Toutefois, ces sous-répertoires sont différents des autres packages auxquels je suis habitué. Par exemple, src/coopr.pyomo contient uniquement un fichier setup.py, tandis que __init__.py
se trouve dans CH/src/coopr.pyomo/coopr/pyomo
. Alors que IPython semble être capable de trouver les paquets, le cahier IPython - bien que le chemin de recherche soit identique - semble être perturbé par la façon dont les paquets sont organisés.
Comment avez-vous installé le paquet? Votre dernier paragraphe le décrit comme s'il avait été copié de la source directement dans le répertoire 'site-packages', et non en exécutant' python setup.py install'. – Evert
En utilisant le [programme d'installation] officiel (https://software.sandia.gov/trac/coopr/downloader/download/file/52). J'ai réexaminé la procédure, voir Edit # 2 pour plus de détails. – ojdo