Heroku的Python找不到要导入的redis(redistogo)

我已经在Heroku上添加了Redistogo插件,但是我无法在控制台模式下对其进行测试.
我已经按照documentation做到了.

$heroku run python --app redis-to-go
Running python attached to terminal... up, run.1
Python 2.7.2 (default, Oct 31 2011, 16:22:04) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> f=open('requirements.txt', 'w')
>>> f.write('redis==2.4.12'+'\n' )
>>> f.close()
>>>
>>> f=open('store.py', 'w')
>>> f.write('import os'+'\n' ) 
>>> f.write('import urlparse'+'\n' ) 
>>> f.write('import redis'+'\n' ) 
>>> f.write("url = urlparse.urlparse(os.environ.get('REDISTOGO_URL', 'redis://localhost'))"+'\n' ) 
>>> f.write('redis = redis.Redis(host=url.hostname, port=url.port, db=0,     password=url.password)'+'\n' ) 
>>> f.close()
>>>
>>> from store import redis
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "store.py", line 3, in <module>
    import redis
ImportError: No module named redis

Heroku的Python找到:os,urlparse,但是找不到redis.
有谁可以帮助我吗?我只需要Heroku的Python控制台模式!
使用本地Python和远程REDISTOGO,我没有任何问题!

更新:

从文档中:

部署到Heroku

要在Heroku上使用Redis To Go,请安装redistogo插件:

$heroku addons:add redistogo

在Heroku控制台上测试它是否可以正常工作:

$heroku run python
Python 2.7.2 (default, Oct 31 2011, 16:22:04) 
>>> from store import redis
>>> redis.set('answer', 42)
True
>>> redis.get('answer')
'42'

在Heroku控制台上不起作用!

请分享您的实践.

解决方法:

这些步骤应在本地完成,提交给git,然后推送到heroku.当您这样做时:

heroku run python --app redis-to-go

它启动了您的应用程序的隔离实例.这不是持久性的,仅存在于该dyno内部.如果要在隔离的实例中对其进行全面测试,则可以加载virtualenv,然后:

pip install redis

但是,下一次您运行应用程序时将不可用.相反,您应该先检查所有文件,然后再推送.即使您只是将redis添加到您的requirements.txt中,它也可以在独立的dyno中工作.

根据您的命令,这应该可以正常工作:

cat "redis==2.4.12" >> requirements.txt
git add requirements.txt
git commit -m 'adding redis'
git push heroku master
heroku addons:add redis-to-go
heroku run python --app redis-to-go

python解释器的内部:

import os
import urlparse

import redis

url = urlparse.urlparse(os.environ.get('REDISTOGO_URL', 'redis://localhost'))

redis = redis.Redis(host=url.hostname, port=url.port, db=0, password=url.password)
redis.set('answer', 42)
redis.get('answer')
上一篇:python-将花部署到Heroku


下一篇:python-如何在Heroku上启动已经制作好的Django应用