Question

Dans mon script utilisé I:

python from pkg_resources import resource_filename

Les deux PyDev et pylint 0.23 se plaignent de l'importation non résolue ici.

E0611 No name 'resource_filename' in module 'pkg_resources'

Si je comprends bien, cela se produit en raison du fait que les deux PyDev et pylint effectuer une analyse uniquement code source, sans vraiment essayer d'analyser / compiler. Et apparemment, ne pkg_resources quelque chose de spécial pour définir pkg_resources. Le paquet et le symbole sont bien sûr là-bas, et tout fonctionne très bien. Deux questions:

  • Comment puis-je convaincre à la fois Eclipse et PyDev qu'ils se trompent?
  • Quelles sont les causes du problème en premier lieu? Je ne l'ai pas trouvé d'autres personnes ayant ce genre de problème, et je doute que ma situation est assez unique ...:)

Python 2.7.1 (sous OSX), distribuer 0.6.19.

Était-ce utile?

La solution

Vous pouvez charger des modules dynamiques gênants en modifiant votre projet de définition de l'interpréteur python pydev. Configurer la liste par défaut « Encastrements forcé » pour inclure des définitions générées dynamiquement que vous utilisez. built-ins forcé sont générés par les bombardements et le chargement / l'inspection des classes générées dynamiquement.

Dans la définition interpréteur Python (preferences => pydev => interpreters => python interpreter), sélectionnez votre interprète actuellement utilisé pour votre projet pydev. Sélectionnez l'onglet Forced Builtins. Appuyez sur le bouton New... et ajoutez pkg_resources à la liste.

Je l'ai fait, et maintenant mes erreurs ont disparu, et l'auto-complétion des méthodes fonctionne bien pour mon projet. J'utilise python 2.7.9, 3.3.3 pydev et éclipse Képler r2.

Pour pylint, vous pouvez désactiver l'avertissement à l'échelle mondiale dans votre projet est pylint config , pour le fichier entier, ou pour une instance de son utilisation. Vous pouvez ajouter un commentaire # pylint: disable=E1101 au début de votre fichier pour le désactiver pour ce module, ou sur la ligne ci-dessus où vous l'utilisez pour désactiver juste pour cette instance. Il y a aussi un peut-être du temps moyen de manuellement allusion à pylint que votre classe a des méthodes spécifiques .

Autres conseils

J'ai eu le même problème. Pour Pydev j'ai trouvé le réponse sur pydev.org: Aller à la ligne d'erreur, appuyez sur Ctrl-1, et sélectionnez «variable non définie. Il ajoutera alors un commentaire #@UndefinedVariable, et l'erreur disparaît.

Pour pylint, la désactivation E1101 fait le tour, pragma # pylint: disable=E1101. pragma pylint juste besoin d'aller au même niveau de retrait, mais le commentaire de pydev devait être sur la même ligne. Ma fonction peu comment-encombrées devient:

def get_test_datafile(file_):
    # pylint: disable=E1101
    return pkg_resources.resource_string(__name__, #@UndefinedVariable
                                         'testdata/'+file_)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top