2009-04-28 6 views
2

Ok j'ai trouvé le problème, il était un problème environnemental, j'ai eu les mêmes modules (moins options.py) sur le sys.path et importais à partir de là à la place. Merci à tous pour votre aide.déclaration d'importation échoue pour un module

J'ai une série de déclarations d'importation, dont la dernière ne fonctionnera pas. Une idée pourquoi? options.py est assis dans le même répertoire que tout le reste.

from snipplets.main import MainHandler 
from snipplets.createnew import CreateNewHandler 
from snipplets.db import DbSnipplet 
from snipplets.highlight import HighLighter 
from snipplets.options import Options 

ImportError: Aucun module d'options nommé

mon fichier __init__.py dans le répertoire snipplets est vide.

+0

Post options.py. Vous n'avez pas donné assez d'informations pour nous aider. –

+0

Rien de spécial à ce sujet: http://github.com/woodenbrick/snipplets/blob/2c13a6de0ae5c6cb752bbc37e2620e823e498c97/snipplets/options.py – wodemoneke

+1

dev et la branche maître en conflit? – SilentGhost

Répondre

2

Je soupçonne que l'un de vos autres importations redéfinie snipplets avec une instruction d'affectation. Ou l'un de vos autres modules a changé sys.path.


Modifier

"de sorte que le flux va comme ceci: ajouter des packages de snipplets à l'importation chemin ..."

n °

Ne pas modifier sys.path - de cette façon il y a des problèmes. La modification site.path conduit à une ambiguïté sur ce qui est - ou n'est pas - sur le chemin, et dans quel ordre.

Les choses les plus simples, les plus fiables, les plus évidentes et les plus contrôlables sont les suivantes. Choisissez exactement un.

  • Définir PYTHONPATH (une fois, externe à votre programme). Une seule variable d'environnement simple presque identique à l'installation sur les packages de site.

  • Installez votre package dans le site-packages.

+0

donc le flux va comme ceci: ajouter des paquets de snipplets au chemin Importer des modules de snipplets J'ai essayé de déplacer les options d'importation au-dessus de tout le reste, mais pas de changement. – wodemoneke

+0

Il serait mon plan de l'ajouter aux paquets de site lorsqu'il est distribué, mais il est encore en développement. Pourquoi serait-il mauvais de modifier sys.path? – wodemoneke

2

votre master branch n'a pas options.py. pourrait-il être que vous deviez maîtriser les branches sont contradictoires?

if this is your actual code alors vous avez variables option à la ligne 21.

+1

Non, je ne fais qu'utiliser la branche dev, master n'a pas été mis à jour. – wodemoneke

+1

belle prise, son appellation pauvre, mais ce n'est pas le problème. – wodemoneke

+1

J'ai essayé votre code et n'ai eu aucun problème avec l'importation. Je suis toujours convaincu que c'est un affrontement de deux branches. – SilentGhost

1

Est-ce que les travaux suivants?

import snipplets.options.Options 

Si tel est le cas, l'un de vos autres fichiers de snipplets définit probablement une variable globale nommée options.

+1

Malheureusement, cela ne fonctionne pas :( – wodemoneke

1

Êtes-vous sur Windows? Vous pouvez essayer de définir une liste __ tous __ dans votre __ initialisation __ fichier .py comme indiqué here. Cela ne devrait pas faire de différence, sauf si vous importez *, mais j'ai vu que les modules ne sont pas importés à moins qu'ils ne soient définis ici.

Deuxièmement, vous pouvez essayer de mettre en place un virtualenv. L'utilisation de nombreux paquets python à l'échelle du site peut mener à ce genre de choses.

Enfin, assurez-vous que les autorisations des options sont correctement définies.J'ai passé des heures à essayer de comprendre ces choses seulement pour découvrir que c'était un problème de ne pas avoir la permission de l'importer.

+0

Je suis sur Linux, donc votre premier point ne s'applique pas Je vais jeter un oeil à la virtualenv – wodemoneke

+0

autorisations semblent bien aussi. – wodemoneke

Questions connexes