Heroku的Python没有找到redis(redistogo)用于导入

时间:2012-05-15 10:18:43

标签: python heroku 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控制台无效!

请分享您的做法。

2 个答案:

答案 0 :(得分:3)

这些步骤应该在本地完成,提交给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 intrepreter里面:

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')

答案 1 :(得分:0)

为什么你们试图用远程控制台完成所有工作?在本地执行应用程序(创建store.py,requirements.txt),然后部署它!当您部署(或推送)应用程序时,Heroku会看到requirements.txt并添加必要的库。这就是为什么它不起作用,因为你的heroku dyno上没有安装redis库。

我不是python开发人员,但我没有遇到任何问题

https://github.com/ismaelga/python-redis-heroku