在子目录中添加tweepy时发生导入错误

2024-09-29 01:27:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把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
"""

我已经试过不使用初始py使用twitter.py,所以这似乎不是问题所在。进口粗花呢似乎也起了作用,但里面的进口效果却不好。在


Tags: inpyimportsrcapihomeinitline
1条回答
网友
1楼 · 发布于 2024-09-29 01:27:19

tweepy似乎希望位于它尝试加载的Python路径上tweepy.models。但是,由于您将tweepy放在一个子目录中,models模块现在位于socialmedia.twitter.tweepy.models。在

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

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

相关问题 更多 >