关于“Python”的核心知识点整理大全62

目录

20.2.2 安装 Heroku Toolbelt

20.2.3 安装必要的包

注意

20.2.4 创建包含包列表的文件 requirements.txt

requirements.txt

requirements.txt

注意

20.2.5 指定 Python 版本

runtime.txt

注意

20.2.6 为部署到 Herohu 而修改 settings.py

settings.py

20.2.7 创建启动进程的 Procfile

Procfile

20.2.8 为部署到 Herohu 而修改 wsgi.py

wsgi.py

20.2.9 创建用于存储静态文件的目录

placeholder.txt

20.2.10 在本地使用 gunicorn 服务器

注意

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新


20.2.2 安装 Heroku Toolbelt

要将项目部署到Heroku的服务器并对其进行管理,需要使用Heroku Toolbelt提供的工具。要 安装最新的Heroku Toolbelt版本,请访问https://toolbelt.heroku.com/,并根据你使用的操作系统按 相关的说明做:使用只包含一行的终端命令,或下载并运行安装程序。

20.2.3 安装必要的包

你还需安装很多包,以帮助在服务器上支持Django项目提供的服务。为此,在活动的虚拟环 境中执行如下命令:

(ll_env)learning_log$ pip install dj-database-url
(ll_env)learning_log$ pip install dj-static
(ll_env)learning_log$ pip install static3
(ll_env)learning_log$ pip install gunicorn

务必逐个地执行这些命令,这样你就能知道哪些包未能正确地安装。dj-database-url包帮助 Django与Heroku使用的数据库进行通信,dj-static和static3包帮助Django正确地管理静态文件, 而gunicorn是一个服务器软件,能够在在线环境中支持应用程序提供的服务。(静态文件包括样 式规则和JavaScript文件。)


注意

在Windows系统中,有些必不可少的包可能无法安装,因此如果在你尝试安装有些这样 的包时出现错误消息,也不用担心。重要的是让Heroku在部署中安装这些包,下一节就 将这样做。


20.2.4 创建包含包列表的文件 requirements.txt

Heroku需要知道我们的项目依赖于哪些包,因此我们将使用pip来生成一个文件,其中列出 了这些包。同样,进入活动虚拟环境,并执行如下命令:

(ll_env)learning_log$ pip freeze > requirements.txt

命令freeze让pip将项目中当前安装的所有包的名称都写入到文件requirements.txt中。请打开 文件requirements.txt,查看项目中安装的包及其版本(如果你使用的是Windows系统,看到的内 容可能不全):

requirements.txt
Django==1.8.4
dj-database-url==0.3.0
dj-static==0.0.6
django-bootstrap3==6.2.2
gunicorn==19.3.0
static3==0.6.1 

“学习笔记”依赖于6个特定版本的包,因此需要在相应的环境中才能正确地运行。我们部署 “学习笔记”时,Heroku将安装requirements.txt列出的所有包,从而创建一个环境,其中包含我们 在本地使用的所有包。有鉴于此,我们可以信心满满,深信项目部署到Heroku后,行为将与它在 本地系统上的完全相同。当你在自己的系统上开发并维护各种项目时,这将是一个巨大的优点。 接下来,我们需要在包列表中添加psycopg2,它帮助Heroku管理活动数据库。为此,打开文 件requirements.txt,并添加代码行psycopg2>=2.6.1。这将安装2.6.1版的psycopg2——如果有更高 的版本,则安装更高的版本:

requirements.txt
Django==1.8.4
dj-database-url==0.3.0
dj-static==0.0.6
django-bootstrap3==6.2.2
gunicorn==19.3.0
static3==0.6.1
psycopg2>=2.6.1 

如果有必不可少的包在你的系统中没有安装,请将其添加到文件requirements.txt中。最终的 文件requirements.txt应包含上面列出的每个包。如果在你的系统中,requirements.txt列出的包的版 本与上面列出的不同,请保留原来的版本号。


注意

如果你使用的是Windows系统,请确保文件requirements.txt的内容与前面列出的一致,而 不要管你在系统中能够安装哪些包。


20.2.5 指定 Python 版本

如果你没有指定Python版本,Heroku将使用其当前的Python默认版本。下面来确保Heroku使 用我们使用的Python版本。为此,在活动的虚拟环境中,执行命令python --version:

(ll_env)learning_log$ python --version
Python 3.5.0

上面的输出表明,我使用的是Python 3.5.0。请在manage.py所在的文件夹中新建一个名为 runtime.txt的文件,并在其中输入如下内容:

runtime.txt
python-3.5.0

这个文件应只包含一行内容,以上面所示的格式指定了你使用的Python版本;请确保输入小 写的python,在它后面输入一个连字符,再输入由三部分组成的版本号。


注意

如果出现错误消息,指出不能使用你指定的Python版本,请访问https://devcenter. heroku.com/并单击Python,再单击链接Specifying a Python Runtime。浏览打开的文章,了 解支持的Python版本,并使用与你使用的Python版本最接近的版本。


20.2.6 为部署到 Herohu 而修改 settings.py

现在需要在settings.py末尾添加一个片段,在其中指定一些Heroku环境设置:

settings.py
--snip--
# django-bootstrap3设置
BOOTSTRAP3 = {'include_jquery': True,}
# Heroku设置
1 if os.getcwd() == '/app':
2 import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost')
}
# 让request.is_secure()承认X-Forwarded-Proto头
3 SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# 支持所有的主机头(host header)
4 ALLOWED_HOSTS = ['*']
# 静态资产配置
5 BASE_DIR = os.path.dirname(os.path.abspath(__file__))STATIC_ROOT = 'staticfiles'STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) 

在1处,我们使用了函数getcwd(),它获取当前的工作目录(当前运行的文件所在的目录)。 在Heroku部署中,这个目录总是/app。在本地部署中,这个目录通常是项目文件夹的名称(就我 们的项目而言,为learning_log)。这个if测试确保仅当项目被部署到Heroku时,才运行这个代码 块。这种结构让我们能够将同一个设置文件用于本地开发环境和在线服务器。

在2处,我们导入了dj_database_url,用于在Heroku上配置服务器。Heroku使用PostgreSQL (也叫Postgres)——一种比SQLite更高级的数据库;这些设置对项目进行配置,使其在Heroku上 使用Postgres数据库。其他设置的作用分别如下:支持HTTPS请求(见3);让Django能够使用 Heroku的URL来提供项目提供的服务(见4);设置项目,使其能够在Heroku上正确地提供静态 文件(见5)。

20.2.7 创建启动进程的 Procfile

Procfile告诉Heroku启动哪些进程,以便能够正确地提供项目提供的服务。这个文件只包含一 行,你应将其命名为Procfile(其中的P为大写),不指定文件扩展名,并保存到manage.py所在的 目录中。 Procfile的内容如下:

Procfile
web: gunicorn learning_log.wsgi --log-file - 

这行代码让Heroku将gunicorn用作服务器,并使用learning_log/wsgi.py中的设置来启动应用程 序。标志log-file告诉Heroku应将哪些类型的事件写入日志。

20.2.8 为部署到 Herohu 而修改 wsgi.py

为部署到Heroku,我们还需修改wsgi.py,因为Heroku需要的设置与我们一直在使用的设置稍 有不同:

wsgi.py
--snip--
import os
from django.core.wsgi import get_wsgi_application
from dj_static import Cling
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "learning_log.settings")
application = Cling(get_wsgi_application()) 

我们导入了帮助正确地提供静态文件的Cling,并使用它来启动应用程序。这些代码在本地 也适用,因此无需将其放在if代码块内。

20.2.9 创建用于存储静态文件的目录

在Heroku上,Django搜集所有的静态文件,并将它们放在一个地方,以便能够高效地管理它 们。我们将创建一个用于存储这些静态文件的目录。在文件夹learning_log中,有一个名称也为 learning_log的子文件夹。在这个子文件夹中,新建一个名为static的文件夹,因此这个文件夹的路 径为learning_log/learning_log/static/。我们还需在这个文件夹中创建一个占位文件,因为项目被推 送到Heroku时,它将不会包含原来为空的文件夹。在目录static/中,创建一个名为placeholder.txt 的文件:

placeholder.txt
This file ensures that learning_log/static/ will be added to the project.
Django will collect static files and place them in learning_log/static/. 

上述内容没有什么特别之处,只是指出了在项目中添加这个文件的原因。

20.2.10 在本地使用 gunicorn 服务器

如果你使用的是Linux或OS X,可在部署到Heroku前尝试在本地使用gunicorn服务器。为此, 在活动的虚拟环境中,执行命令heroku local以启动Procfile指定的进程:

(ll_env)learning_log$ heroku local
Installing Heroku Toolbelt v4... done
--snip--
forego | starting web.1 on port 5000
1 web.1 | [2015-08-13 22:00:45 -0800] [12875] [INFO] Starting gunicorn 19.3.0
2 web.1 | [2015-08-13 22:00:45 -0800] [12875] [INFO] Listening at:http://0.0.0.0:5000 (12875)
3 web.1 | [2015-08-13 22:00:45 -0800] [12878] [INFO] Booting worker with pid: 12878

首次执行命令heroku local时,将安装Heroku Toolbelt中的很多包。这里的输出表明启动了 gunicorn,其进程id为12875(见1)。处的输出表明,gunicorn在端口5000上侦听请求。另外, gunicorn还启动了一个工作进程(12878),用于帮助处理请求(见3)。

为确认一切运行正常,请访问http://localhost:5000/,你将看到“学习笔记”的主页,就像使 用Django服务器(runserver)时一样。为停止heroku local启动的进程,请按Ctrl + C,你将在本 地开发中继续使用runserver。


注意

gunicorn不能在Windows系统上运行,因此如果你使用的是Windows系统,请跳过这一步。 但这不会影响你将项目部署到Heroku。.


关于“Python”的核心知识点整理大全60-CSDN博客

关于“Python”的核心知识点整理大全59-CSDN博客

关于“Python”的核心知识点整理大全58-CSDN博客

关于“Python”的核心知识点整理大全57-CSDN博客

关于“Python”的核心知识点整理大全56-CSDN博客

关于“Python”的核心知识点整理大全55-CSDN博客

关于“Python”的核心知识点整理大全54-CSDN博客

关于“Python”的核心知识点整理大全53-CSDN博客

关于“Python”Django 管理网站的核心知识点整理大全52-CSDN博客

关于“Python”的核心知识点整理大全51-CSDN博客

关于“Python”的核心知识点整理大全50-CSDN博客

关于“Python”的核心知识点整理大全37-CSDN博客

关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SparkStreaming基础解析(四)

1、 Spark Streaming概述 1.1 Spark Streaming是什么 Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、…

鸿蒙南向开发—OpenHarmony技术编译构建框架

概述 OpenHarmony编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能: 以部件为最小粒度拼装产品和独立编译。支持轻量、小型、标准三种系…

竞赛保研 基于机器视觉的行人口罩佩戴检测

简介 2020新冠爆发以来,疫情牵动着全国人民的心,一线医护工作者在最前线抗击疫情的同时,我们也可以看到很多科技行业和人工智能领域的从业者,也在贡献着他们的力量。近些天来,旷视、商汤、海康、百度都多家科技公司研…

思科常用图标大全Cisco产品图标库Icon(附PPT下载)

华为企业网络常用图标大全(附PPT下载)-CSDN博客文章浏览阅读2.8k次。PPT完整版获取交换机&WLAN服务器网络&网管建筑公共终端end_华为企业网络常用图标大全https://blog.csdn.net/XMWS_IT/article/details/120864637?ops_request_misc%257B%2522…

OpenAI ChatGPT-4开发笔记2024-03:Chat之Function Calling/Function/Tool/Tool_Choice

Updates on Function Calling were a major highlight at OpenAI DevDay. In another world,原来的function call都不再正常工作了,必须全部重写。 function和function call全部由tool和tool_choice取代。2023年11月之前关于function call的代码都准备翘翘。 干嘛…

【Java EE初阶八】多线程案例(计时器模型)

1. java标准库的计时器 1.1 关于计时器 计时器类似闹钟,有定时的功能,其主要是到时间就会执行某一操作,即可以指定时间,去执行某一逻辑(某一代码)。 1.2 计时器的简单介绍 在java标准库中,提供…

新手可理解的PyTorch线性层解析:神经网络的构建基石

目录 torch.nn子模块Linear Layers详解 nn.Identity Identity 类描述 Identity 类的功能和作用 Identity 类的参数 形状 示例代码 nn.Linear Linear 类描述 Linear 类的功能和作用 Linear 类的参数 形状 变量 示例代码 nn.Bilinear Bilinear 类的功能和作用 B…

国家信息安全水平等级考试NISP二级题目卷⑥(包含答案)

国家信息安全水平等级考试NISP二级题目卷(六) 国家信息安全水平等级考试NISP二级题目卷(六)需要报考咨询可以私信博主! 前言: 国家信息安全水平考试(NISP)二级,被称为校园版”CISP”,由中国信息…

用友U8 Cloud smartweb2.RPC.d XML外部实体注入漏洞

产品介绍 用友U8cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型、集团型企业,提供企业级云ERP整体解决方案。它包含ERP的各项应用,包括iUAP、财务会计、iUFO cloud、供应链与质量管理、人力资源、生产制造、管理会计、资产管理&#…

基于gamma矫正的照片亮度调整(python和opencv实现)

import cv2 import numpy as npdef adjust_gamma(image, gamma1.0):invGamma 1.0 / gammatable np.array([((i / 255.0) ** invGamma) * 255 for i in np.arange(0, 256)]).astype("uint8")return cv2.LUT(image, table)# 读取图像 original cv2.imread("tes…

影视仓最新配置接口2024tvbox源配置地址

影视仓是在TVBox开源代码基础上开发的优质版本,安装后需要配置接口才能正常使用。影视仓"内置版"是开发者做的资源内置化修改版本,不用自行设置接口,安装后即可使用。 影视仓的接口配置方法与TVBOX一样,区别在于影视仓…

Winform工具箱控件MenuStrip

MenuStrip是菜单栏 ComboBox是下拉框 TextBox是文本框 DataGridView是数据表 TextBox是文本框,大小可以调节,可以是单行,也可以是多行,通过右上角的小三角可以修改。 这个文本在编辑的时候可以在属性的Text中点击右边的小三角来换…

卷积神经网络|导入图片

在学习卷积神经网络时,我们通常使用的就是公开的数据集,这里,我们不使用公开数据集,直接导入自己的图片数据,下面,就简单写个程序实现批量图片的导入。 import osfrom PIL import Imageimport numpy as np…

Prometheus实战篇:Prometheus监控redis

准备环境 docker-compose安装redis docker-compose.yaml version: 3 services:redis:image:redis:5container_name: rediscommand: redis-server --requirepass 123456 --maxmemory 512mbrestart: alwaysvolumes:- /data/redis/data: /dataport:- "6379:6379"dock…

JAVA版随机抽人

主函数 public class Main {public static void main(String[] args) {//这里存入数据String[] data {"土一","李二","张三","李四","乔冠宇","王五"};MyJFrame frame new MyJFrame(data);} }界面类 import j…

【React系列】Portals、Fragment

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) Portals 某些情况下,我们希望渲染的内容独立于父组件,甚至是独立于当前挂载到的DOM元素中&am…

GPU连通域分析方法

第1章连通域分析方法 连通域分析方法用于提取图像中相似属性的区域,并给出区域的面积,位置等特征信息。分为两种,基于游程(Runlength),和基于标记(Label)。 基于游程的方法,按照行对图像进行游…

3D Gaussian Splatting复现

最近3D Gaussian Splatting很火,网上有很多复现过程,大部分都是在Windows上的。Linux上配置环境会方便简单一点,这里记录一下我在Linux上复现的过程。 Windows下的环境配置和编译,建议看这个up主的视频配置,讲解的很细…

695岛屿最大面积

题目 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个…

逻辑回归简单案例分析--鸢尾花数据集

文章目录 1. IRIS数据集介绍2. 具体步骤2.1 手动将数据转化为numpy矩阵2.1.1 从csv文件数据构建Numpy数据2.1.2 模型的搭建与训练2.1.3 分类器评估2.1.4 分类器的分类报告总结2.1.5 用交叉验证(Cross Validation)来验证分类器性能2.1.6 完整代码&#xf…