Вопрос

Я пытаюсь упаковать Tweepy в подкаталоге. Но я не могу заставить импорт работать.

В этом случае:

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
"""

Я уже пытался не использовать init.py и использовать Twitter.py, так что это не является проблемой. Также кажется, что импорт Tweepy работает, но импорт внутри Tweepy не работает хорошо.

Это было полезно?

Решение

Похоже, Tweepy рассчитывает быть на пути Python-он пытается загрузить tweepy.models. Анкет Однако, поскольку вы помещаете Tweepy в подкаталог, модельный модуль теперь расположен в socialmedia.twitter.tweepy.models.

Вы либо должны добавить socialmedia/twitter/ на путь Python, или вы должны изменить импорт Tweepy, чтобы компенсировать новую структуру пакета. Ни одно решение не отлично. Первое представляет специальную конфигурацию, которая должна быть установлена. Последнее потребует, чтобы вы исправляли импорт в любое время, когда обновляется Tweepy Code (поскольку обновленный код будет содержать оригинал tweepy.whatever импорт). Вот почему, как правило, не очень хорошая идея, чтобы перемещать пакеты, как вы. Вместо этого просто установите его как обычно (run setup.py или easy_install, или любой другой метод, который вы предпочитаете), а затем в коде, который использует пакет, просто импортируйте его.

Если вам не обязательно перемещаться, есть описываемая вами структура каталогов, я бы просто установил пакеты нормально. Вы сражаетесь с тяжелой битвой, чтобы сделать иначе. В противном случае,

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top