Skip to main content
 首页 » 编程设计

python之如何将 Heroku 上的不同包要求到本地盒子

2025年05月04日14Terrylee

我正在为 deploy on Heroku 编写一个 Python Flask 应用程序.它将使用数据库。对于本地开发,我想使用 Sqlite,但是当部署到 Heroku 时,我想使用 Postgresql。我怎样才能做到这一 pip ?

我被卡住了,因为我不知道如何在我的盒子和 Heroku 服务器之间要求一组不同的包。


如果这是一个 Ruby 应用程序,我会在我的 Gemfile 中编写

gem "pg", :group => :production 
gem "sqlite3", :group => :development 

然后 Bundler 将在开发和生产中安装适当的包。但我不知道 Python's pip 有任何类似的工作流程

请您参考如下方法:

好吧,你有两件事要解决。

首先,requirements.txt 这不是什么大问题。您可以将所有需求放在同一个 requirements.txt 文件中,安装两个数据库绑定(bind)不会造成任何损害。但是,如果您想分开,只需使用 requirements.txt 进行部署,使用 requirements-dev.txt 进行本地开发。

更重要的是数据库设置本身,为此你有一个单一的解决方案:

app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get( 
    'DATABASE_URL', 'sqlite:////tmp/test.db') 

由于 DATABASE_URL 是在 Heroku 上设置的,而不是在本地设置的(确保是这种情况),os.environ.get 将找不到它,因此恢复为默认值,即 sqlite 连接字符串。