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

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

07c45ccaa0ed8167e8291936d4f1e735_19a68cc043e8489bba19ef3b275c5351.png

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。.

目录
相关文章
|
1月前
|
测试技术 API Python
【10月更文挑战第1天】python知识点100篇系列(13)-几种方法让你的电脑一直在工作
【10月更文挑战第1天】 本文介绍了如何通过Python自动操作鼠标或键盘使电脑保持活跃状态,避免自动息屏。提供了三种方法:1) 使用PyAutoGUI,通过安装pip工具并执行`pip install pyautogui`安装,利用`moveRel()`方法定时移动鼠标;2) 使用Pymouse,通过`pip install pyuserinput`安装,采用`move()`方法移动鼠标绝对位置;3) 使用PyKeyboard,同样需安装pyuserinput,模拟键盘操作。文中推荐使用PyAutoGUI,因其功能丰富且文档详尽。
|
3月前
|
Python
python知识点
【8月更文挑战第27天】python知识点
3398 2
|
20天前
|
缓存 Java 索引
[Python]知识点
本文主要介绍了Python的一些高级知识点和使用细节,包括pip的使用、内置函数、列表、元组、字典、集合、变量、Lambda表达式、面向对象编程、异常处理、模块及标准库等。文章适合有一定Python基础的读者,重点在于深入理解和掌握Python的高级特性。文中还提供了大量示例代码,帮助读者更好地理解和应用这些知识点。
23 1
[Python]知识点
WK
|
3月前
|
存储 机器学习/深度学习 JSON
Python入门知识点
Python入门覆盖历史、设计理念、变量、数据类型、控制结构等。了解Python的发展,掌握动态类型的灵活性,熟悉整数、浮点数、字符串等数据类型。学会if/else、for/while循环构建逻辑流程,使用def定义函数,lambda快速创建匿名函数。通过类实现面向对象编程,利用模块和包组织代码。掌握try-except处理异常,open()进行文件操作。利用标准库和第三方库增强功能,理解集合、字典、列表推导式的应用,深入魔法方法、递归、装饰器等高级特性,以及上下文管理器和字符串、列表、元组的操作技巧。
WK
34 0
|
1月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
1月前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
1月前
|
调度 Python
python知识点100篇系列(20)-python协程与异步编程asyncio
【10月更文挑战第8天】协程(Coroutine)是一种用户态内的上下文切换技术,通过单线程实现代码块间的切换执行。Python中实现协程的方法包括yield、asyncio模块及async/await关键字。其中,async/await结合asyncio模块可更便捷地编写和管理协程,支持异步IO操作,提高程序并发性能。协程函数、协程对象、Task对象等是其核心概念。
|
30天前
|
Python Windows
python知识点100篇系列(24)- 简单强大的日志记录器loguru
【10月更文挑战第11天】Loguru 是一个功能强大的日志记录库,支持日志滚动、压缩、定时删除、高亮和告警等功能。安装简单,使用方便,可通过 `pip install loguru` 快速安装。支持将日志输出到终端或文件,并提供丰富的配置选项,如按时间或大小滚动日志、压缩日志文件等。还支持与邮件通知模块结合,实现邮件告警功能。
python知识点100篇系列(24)- 简单强大的日志记录器loguru
|
30天前
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
python知识点100篇系列(23)- 使用stylecloud生成词云
|
1月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
下一篇
无影云桌面