在Heroku上用Python2.7导入sqlite3
我正在尝试在Heroku上使用Python,成功运行了“hello world”示例,使用的是Flask。
现在我想部署一个非常简单的应用,使用sqlite3和Flask,我知道这个应用是可以正常工作的。但是我在让它运行时遇到了麻烦,我怀疑问题出在sqlite上。
当我启动Heroku提供的Python命令行时,出现了这样的导入错误日志:
$ heroku run python
Running python attached to terminal... up, run.2
Python 2.7.1 (r271:86832, Jun 26 2011, 01:08:11)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import *
File "/usr/local/lib/python2.7/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: No module named _sqlite3
>>>
我需要在requirements.txt
文件中添加什么吗?这个文件是用来列出依赖的,目前里面只包含Flask==0.8
。在示例中导入datetime是可以正常工作的。我用heroku logs
查看日志,发现也出现了这个消息,但没有其他重要的信息。
我在Heroku上有没有办法使用sqlite3呢?谢谢你的帮助。
1 个回答
1
在Heroku上这是不可能的,因为sqlite需要一个永久可写的文件系统。而Heroku并不提供这样的永久可写文件系统,所以sqlite3无法使用。
还有一点需要考虑:Heroku是一个分布式环境。这意味着一个应用可能会在很多机器上运行,涉及多个进程。如果允许的话,这样会生成多个sqlite3实例(每个实例都是在本地运行的)。
另外,可以查看:Heroku开发中心 - 只读文件系统