无法在脚本中导入本地模块,就像我在Django shell中一样

时间:2014-06-21 23:14:52

标签: python django mongodb pymongo

这是错误:

Traceback (most recent call last):
File "twitterstream.py", line 3, in <module>
from tweemo.models import TwitterStream
ImportError: No module named tweemo.models

背景:

在Django中我有一个简单的模型,如下所示:

from django.db import models

class TwitterStream(models.Model):
   text = models.CharField()

从Django shell中我可以毫无问题地执行以下操作

>>> from tweemo.models import TwitterStream
>>> tweet = TwitterStream.objects.create(text = 'hello again')
>>> tweet.text
'hello again'

因为这在django shell中有效,我想我可以插入这一行:

>>> from tweemo.models import TwitterStream

进入任何常规python脚本,例如,将数据插入脚本中的TwitterStream模型(以及我的Mondo数据库中)。

基本上,我有一个脚本可以将twitter实时流打印到命令行。 Itried通过包含这个来修改它

 >>> from tweemo.models import TwitterStream

并改变这个:

for line in response:
    print response

进入这个:

for line in response:
    tweet = str(tweet) + str(" ") + str(count) 
    tweet = TwitterStream.objects.create(text = line.strip())
    count += 1

仅供参考:我的包含TwitterStream类的models.py位于我的应用程序'tweemo'中,该应用程序位于项目内,也称为“twitter”。我希望将实时流发送到mymongo数据库的python脚本与models.py文件 - tweemo app文件夹位于同一文件夹中。

enter image description here

我是Django / Mongo的新手,所以离开这里......

提前致谢

2 个答案:

答案 0 :(得分:0)

Python将自动检查与输入脚本位于同一目录中的模块,因此您只需编写

即可
from models import TwitterStream

当你在django shell中时,这种行为是不同的,因为django将项目根路径附加到sys.path,Python也在searching for modules时使用。

答案 1 :(得分:0)

如果通过django shell导入模型,它必须通过项目文件夹中的py文件工作。 我唯一的猜测就是删除项目文件夹中的pyc文件并进行测试。如果没有,@ dannymilsom解决方案会派上用场:)