Python 在子目录中添加tweepy时出现导入错误

Python 在子目录中添加tweepy时出现导入错误,python,import,importerror,tweepy,Python,Import,Importerror,Tweepy,我正在尝试将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: """ T

我正在尝试将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
"""
导入社交媒体
进口粗花呢
导入日志记录
#此文件位于socialmedia/twitter/\uuuu init\uuuuuu.py中
#Tweepy位于socialmedia/twitter/Tweepy/__init__.py中
#我得到这个错误:
"""
回溯(最近一次呼叫最后一次):
文件“/home/samos/workspace/socialmediaapi/src/test/test.py”,第1行,在
从socialmedia.twitter导入TwitterAPI
文件“/home/samos/workspace/socialmedia-api/src/socialmedia/twitter/_init__.py”,第5行,在
从socialmedia.twitter导入tweepy
文件“/home/samos/workspace/socialmedia-api/src/socialmedia/twitter/tweepy/___init__.py”,第12行,在
从tweepy.models导入状态、用户、DirectMessage、友谊、SavedSearch、SearchResult、ModelFactory
ImportError:没有名为tweepy.models的模块
"""

我已经尝试过不使用init.py和twitter.py,所以这似乎不是问题所在。tweepy的导入似乎也在工作,但是tweepy内部的导入工作得不好。

看起来tweepy希望位于Python路径上——它尝试加载
tweepy.models
。但是,由于您将tweepy放在子目录中,因此模型模块现在位于
socialmedia.twitter.tweepy.models

您要么必须将
socialmedia/twitter/
添加到Python路径,要么必须更改tweepy的导入以补偿新的包结构。这两种解决方案都不是很好。前者引入了必须设置的特殊配置。后者要求您在更新tweepy代码时修复导入(因为更新后的代码将包含原始的
tweepy.whatever
imports)。这就是为什么像你这样移动包裹通常不是一个好主意。相反,只需按正常方式安装它(运行setup.py或easy_install,或任何您喜欢的方法),然后在使用该包的代码中导入它即可


除非您必须移动您描述的目录结构,否则我只会正常安装软件包。你要做的是一场艰难的战斗。否则,

看起来tweepy应该在Python路径上——它尝试加载
tweepy.models
。但是,由于您将tweepy放在子目录中,因此模型模块现在位于
socialmedia.twitter.tweepy.models

您要么必须将
socialmedia/twitter/
添加到Python路径,要么必须更改tweepy的导入以补偿新的包结构。这两种解决方案都不是很好。前者引入了必须设置的特殊配置。后者要求您在更新tweepy代码时修复导入(因为更新后的代码将包含原始的
tweepy.whatever
imports)。这就是为什么像你这样移动包裹通常不是一个好主意。相反,只需按正常方式安装它(运行setup.py或easy_install,或任何您喜欢的方法),然后在使用该包的代码中导入它即可

除非您必须移动您描述的目录结构,否则我只会正常安装软件包。你要做的是一场艰难的战斗。否则,