0

我正在尝试将 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 内部的导入效果不佳。

4

1 回答 1

3

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

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

除非您绝对必须移动具有您描述的目录结构,否则我只会正常安装软件包。你正在打一场艰苦的战斗。除此以外,

于 2011-03-19T05:49:26.270 回答