Question

Je suis en train d'emballer tweepy dans un sous-répertoire. Mais je ne peux pas travailler les importations.

Ceci est le cas:

import socialmedia
import tweepy
import logging


# This file is in socialmedia / twitter / __init__.py
# Tweepy is located in socialmedia / twitter / tweepy / __init__.py

# I am getting this error: 
"""
Traceback (most recent call last):
  File "/home/samos/workspace/socialmedia-api/src/test/test.py", line 1, in <module>
    from socialmedia.twitter import TwitterAPI
  File "/home/samos/workspace/socialmedia-api/src/socialmedia/twitter/__init__.py", line 5, in <module>
    from socialmedia.twitter import tweepy
  File "/home/samos/workspace/socialmedia-api/src/socialmedia/twitter/tweepy/__init__.py", line 12, in <module>
    from tweepy.models import Status, User, DirectMessage, Friendship, SavedSearch, SearchResult, ModelFactory
ImportError: No module named tweepy.models
"""

Je l'ai déjà essayé de ne pas utiliser le init.py et l'utilisation twitter.py, donc cela ne semble pas être le problème. Il semble également que l'importation de tweepy fonctionne, mais les importations à l'intérieur tweepy ne fonctionnent pas bien.

Était-ce utile?

La solution

On dirait tweepy d'être attend sur le chemin Python - il tente de charger tweepy.models. Cependant, puisque vous mettez tweepy dans un sous-répertoire, le module modèles est maintenant situé à socialmedia.twitter.tweepy.models.

Vous avez soit d'ajouter socialmedia/twitter/ au chemin Python, ou vous devez les importations de changement tweepy pour compenser la nouvelle structure de l'emballage. Aucune de ces solutions est grande. Les anciens introduit une configuration spéciale qui doit être réglée. Ce dernier vous demandera de fixer les importations tout moment le code tweepy est mis à jour (car le code mis à jour contiendra les importations de tweepy.whatever d'origine). C'est pourquoi il est généralement pas une bonne idée de paquets déplacer comme vous faites. Au lieu de cela, il suffit d'installer comme normal (course setup.py ou easy_install, ou quelle que soit la méthode que vous préférez), puis dans le code qui utilise le paquet juste importer.

Sauf si vous devez absolument aller avoir la structure de répertoire que vous décrivez, je voudrais juste installer des paquets normalement. Vous vous battez une bataille difficile de faire autrement. Dans le cas contraire,

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top