我想要部署到Heroku的Django应用程序。我尝试按照此处的说明操作:https://devcenter.heroku.com/articles/getting-started-with-django 它告诉你使用虚拟环境。
但是,我使用的是Anaconda,它不能与虚拟环境很好地配合使用。有没有人将Anaconda的Django应用程序部署到Heroku并引导我完成这些步骤?
答案 0 :(得分:7)
我也有这个问题。
我想部署一个使用numpy,sckit-learn和其他一些conda包的django应用程序。
我使用了conda-buildpack,但是从django内部无法访问已安装的软件包。所以我创建了一个扩展PYTHONPATH
的fork并删除了使用pip install -r requirements.txt
安装依赖项的部分,因为这部分与heroku上的 memcached冲突了。
现在我有一个multiple buildpack setup
使用默认heroku python buildpack和my custom condas buildpack fork
requirements.txt
由python buildpack处理,conda-requirements.txt
由conda buildpack处理。对我来说就像是一种魅力。
答案 1 :(得分:0)
在部署之前,请对项目进行以下四个更改,以便可以使用Heroku在线进行部署:
type Types = ConstructComponentProps["type"];
// type Types = "Functional Component 1" | "Functional Component 2"
作为您的网络服务器。
(由于您使用的是conda环境gunicorn当前无法在任何conda渠道上安装。因此,请使用gunicorn
) pip install gunicorn
文件添加到项目的基本目录中,并在其中添加模块名称及其版本,或仅复制运行requirements.txt
命令后获得的内容。 创建一个新文件:pip freeze
并在其中添加以下内容:
web:gunicorn [Project_name] .wsgi --log-file-
(Procfile
是您自己项目的目录名称)
这表示要使用现有的[Project_name] .wsgi文件,但要使用gunicorn。
仅对[Project_name]
文件进行一次更改:
ALLOWED_HOSTS = ['*']
(通配符星号*表示所有域都可以保持简单。)
现在您终于可以使用以下步骤进行部署:
在Heroku上创建一个新应用:
在CLI上,输入settings.py
(Heroku将为您的应用创建一个随机名称; [您的应用名称])
为Heroku添加git远程“钩子”:
heroku git:remote -a [您的应用名称]
忽略静态文件:
heroku config:set DISABLE_COLLECTSTATIC = 1
将我们的代码推送到Heroku:
git push heroku master
最后,启用您的Heroku应用:
heroku ps:scale web = 1
(这里是heroku create
的基本Heroku服务)
要打开您的应用,请执行以下操作:web=1
您的应用现在应该可以在Heroku上运行了 。
答案 2 :(得分:0)
我能够使用Firebolt的方法进行部署,并进行以下修改:
在第2步:将Requirements.txt文件添加到项目基本目录时,如果要复制pip Frozen命令的内容,则必须用软件包的版本替换对文件路径的所有引用。 / p>
示例:将“ asgiref @ file:/// tmp / build / 80754af9 / asgiref_1602513567813 / work”替换为“ asgiref == 3.3.0”。
为了检查要安装哪个版本的软件包: