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

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

91a1e1e839fd167c72a9adb165db1e7e_586ef1a95c7a4c6fa4c48a4fdb0d0415.png

20.2.11 使用 Git 跟踪项目文件

如果你阅读完了第17章,就知道Git是一个版本控制程序,让你能够在每次成功实现新功能 后都拍摄项目代码的快照。无论出现什么问题(如实现新功能时不小心引入了bug),你都可以轻 松地恢复到最后一个可行的快照。每个快照都被称为提交。 使用Git意味着你在试着实现新功能时无需担心破坏项目。将项目部署到服务器时,需要确 保部署的是可行版本。如果你想更详细地了解Git和版本控制,请参阅附录D。


1. 安装Git

Heroku Toolbelt包含Git,因此它应该已经安装到了你的系统中。然而,在安装Heroku Toolbelt之 前打开的终端窗口中无法访问Git,因此请打开一个新的终端窗口,并在其中执行命令git --version:


(ll_env)learning_log$ git --version
git version 2.5.0

如果由于某种原因出现了错误消息,请参阅附录D中的Git安装说明。


2. 配置Git

Git跟踪谁修改了项目,即便项目由一个人开发时亦如此。为进行跟踪,Git需要知道你的用 户名和email。因此,你必须提供用户名,但对于练习项目,可随便伪造一个email:


(ll_env)learning_log$ git config --global user.name "ehmatthes"
(ll_env)learning_log$ git config --global user.email "eric@example.com"

如果你忘记了这一步,当你首次提交时,Git将提示你提供这些信息。


3. 忽略文件

我们无需让Git跟踪项目中的每个文件,因此将让Git忽略一些文件。为此,在manage.py所在 的文件夹中创建一个名为.gitignore的文件。注意,这个文件名以句点打头,且不包含扩展名。在 这个文件中输入如下内容:


.gitignore

ll_env/
__pycache__/
*.sqlite3

我们让Git忽略目录ll_env,因为我们随时都可以自动重新创建它。我们还指定不跟踪目录 __pycache__,这个目录包含Django运行.py文件时自动创建的.pyc文件。我们没有跟踪对本地数 据库的修改,因为这是一个糟糕的做法:如果你在服务器上使用的是SQLite,当你将项目推送到服务器时,可能会不小心用本地测试数据库覆盖在线数据库。


注意

如果你使用的是Python 2.7,请将_pycache_替换为*.pyc,因为Python 2.7不会创建目录 __pycache__。


4. 提交项目

我们需要为“学习笔记”初始化一个Git仓库,将所有必要的文件都加入到这个仓库中,并 提交项目的初始状态,如下所示:


1 (ll_env)learning_log$ git init
Initialized empty Git repository in /home/ehmatthes/pcc/learning_log/.git/
2 (ll_env)learning_log$ git add .
3 (ll_env)learning_log$ git commit -am "Ready for deployment to heroku."
[master (root-commit) dbc1d99] Ready for deployment to heroku.
 43 files changed, 746 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 Procfile
 --snip--
 create mode 100644 users/views.py
4 (ll_env)learning_log$ git status
# On branch master
nothing to commit, working directory clean
(ll_env)learning_log$

在1处,我们执行命令git init,在“学习笔记”所在的目录中初始化一个空仓库。在2处, 我们执行了命令git add .(千万别忘了这个句点),它将未被忽略的文件都添加到这个仓库中。 在3处,我们执行了命令git commit -am commit message,其中的标志-a让Git在这个提交中包含 所有修改过的文件,而标志-m让Git记录一条日志消息。


在4处,我们执行了命令git status,输出表明当前位于分支master中,而工作目录是干净 (clean)的。每当你要将项目推送到Heroku时,都希望看到这样的状态。


20.2.12 推送到 Heroku

我们终于为将项目推送到Heroku做好了准备。在活动的虚拟环境中,执行下面的命令:


1 (ll_env)learning_log$ heroku login
Enter your Heroku credentials.
Email: eric@example.com
Password (typing will be hidden):
Logged in as eric@example.com
2 (ll_env)learning_log$ heroku create
Creating afternoon-meadow-2775... done, stack is cedar-14
https://afternoon-meadow-2775.herokuapp.com/ |
https://git.heroku.com/afternoon-meadow-2775.git
Git remote heroku added
3 (ll_env)learning_log$ git push heroku master
--snip--
remote: -----> Launching... done, v6
4 remote: https://afternoon-meadow-2775.herokuapp.com/ deployed to Heroku
remote: Verifying deploy.... done.
To https://git.heroku.com/afternoon-meadow-2775.git
 bdb2a35..62d711d master -> master
(ll_env)learning_log$


首先,在终端会话中,使用你在https://heroku.com/创建账户时指定的用户名和密码来登录 Heroku(见1)。然后,让Heroku创建一个空项目(见2)。Heroku生成的项目名由两个单词和一 个数字组成,你以后可修改这个名称。接下来,我们执行命令git push heroku master(见3), 它让Git将项目的分支master推送到Heroku刚才创建的仓库中;Heroku随后使用这些文件在其服务 器上创建项目。4处列出了用于访问这个项目的URL。


执行这些命令后,项目就部署好了,但还未对其做全面的配置。为核实正确地启动了服务器 进程,请执行命令heroku ps:


(ll_env)learning_log$ heroku ps
1 Free quota left: 17h 40m
2 === web (Free): `gunicorn learning_log.wsgi __log-file -`
web.1: up 2015/08/14 07:08:51 (~ 10m ago)
(ll_env)learning_log$

输出指出了在接下来的24小时内,项目还可在多长时间内处于活动状态(见1)。编写本书 时,Heroku允许免费部署在24小时内最多可以有18小时处于活动状态。项目的活动时间超过这个 限制后,将显示标准的服务器错误页面,稍后我们将设置这个错误页面。在2处,我们发现启动 了Procfile指定的进程。


现在,我们可以使用命令heroku open在浏览器中打开这个应用程序了:


(ll_env)learning_log$ heroku open
Opening afternoon-meadow-2775... done

你也可以启动浏览器并输入Heroku告诉你的URL,但上述命令可实现同样的结果。你将看到 “学习笔记”的主页,其样式设置正确无误,但你还无法使用这个应用程序,因为我们还没有建 立数据库。


注意

部署到Heroku的流程会不断变化。如果你遇到无法解决的问题,请通过查看Heroku文档 来获取帮助。为此,可访问https://devcenter.heroku.com/,单击Python,再单击链接Getting Started with Django。如果你看不懂这些文档,请参阅附录C提供的建议。


20.2.13 在 Heroku 上建立数据库

为建立在线数据库,我们需要再次执行命令migrate,并应用在开发期间生成的所有迁移。要对Heroku项目执行Django和Python命令,可使用命令heroku run。下面演示了如何对Heroku部 署执行命令migrate:


1 (ll_env)learning_log$ heroku run python manage.py migrate
2 Running `python manage.py migrate` on afternoon-meadow-2775... up, run.2435
 --snip--
3 Running migrations:
 --snip--
 Applying learning_logs.0001_initial... OK
 Applying learning_logs.0002_entry... OK
 Applying learning_logs.0003_topic_user... OK
 Applying sessions.0001_initial... OK
(ll_env)learning_log$

我们首先执行了命令heroku run python manage.py migrate(见1);Heroku随后创建一个终 端会话来执行命令migrate(见2)。在3处,Django应用默认迁移以及我们在开发“学习笔记” 期间生成的迁移。 现在如果你访问这个部署的应用程序,将能够像在本地系统上一样使用它。然而,你看不到 你在本地部署中输入的任何数据,因为它们没有复制到在线服务器。一种通常的做法是不将本地 数据复制到在线部署中,因为本地数据通常是测试数据。 你可以分享“学习笔记”的Heroku URL,让任何人都可以使用它。在下一节,我们将再完 成几个任务,以结束部署过程并让你能够继续开发“学习笔记”。


20.2.14 改进 Heroku 部署

在本节中,我们将通过创建超级用户来改进部署,就像在本地一样。我们还将让这个项目更 安全:将DEBUG设置为False,让用户在错误消息中看不到额外的信息,以防他们使用这些信息来 攻击服务器。


1. 在Heroku上创建超级用户

我们知道可使用命令heroku run来执行一次性命令,但也可这样执行命令:在连接到了Heroku 服务器的情况下,使用命令heroku run bash来打开Bash终端会话。Bash是众多Linux终端运行的 语言。我们将使用Bash终端会话来创建超级用户,以便能够访问在线应用程序的管理网站:


(ll_env)learning_log$ heroku run bash
Running `bash` on afternoon-meadow-2775... up, run.6244
1 ~ $ ls
learning_log learning_logs manage.py Procfile requirements.txt runtime.txt users
staticfiles
2 ~ $ python manage.py createsuperuser
Username (leave blank to use 'u41907'): ll_admin
Email address:
Password:
Password (again):
Superuser created successfully.
3 ~ $ exit 
exit
(ll_env)learning_log$

在1处,我们执行命令ls,以查看服务器上有哪些文件和目录;服务器包含的文件和目录应 该与本地系统相同。你可以像遍历其他文件系统一样遍历这个文件系统。


注意

即便你使用的是Windows系统,也应使用这里列出的命令(如ls而不是dir),因为你正通 过远程连接运行一个Linux终端。


在2处,我们执行了创建超级用户的命令,它像第18章在本地系统创建超级用户一样提示你 输入相关的信息。在这个终端会话中创建超级用户后,使用命令exit返回到本地系统的终端会话 (见3)。


现在,你可以在在线应用程序的URL末尾添加/admin/来登录管理网站了。对我而言,这个 URL为https://afternoon-meadow-2775.herokuapp.com/admin/。 如果已经有其他人开始使用这个项目,别忘了你可以访问他们的所有数据!千万别不把这当 回事,否则用户就不会再将其数据托付给你了。


2. 在Heroku上创建对用户友好的URL


你可能希望URL更友好,比https://afternoon-meadow-2775.herokuapp.com/更好记。为此,可 只需使用一个命令来重命名应用程序:


(ll_env)learning_log$ heroku apps:rename learning-log
Renaming afternoon-meadow-2775 to learning-log... done
https://learning-log.herokuapp.com/ | https://git.heroku.com/learning-log.git
Git remote heroku updated
(ll_env)learning_log$

给应用程序命名时,可使用字母、数字和连字符;你想怎么命名应用程序都可以,只要指定 的名称未被别人使用就行。现在,项目的URL变成了https://learning-log.herokuapp.com/;使用以 前的URL再也无法访问它,命令apps:rename 将整个项目都移到了新的URL处。


注意

你使用Heroku提供的免费服务来部署项目时,如果项目在指定的时间内未收到请求或过 于活跃,Heroku将让项目进入休眠状态。用户初次访问处于休眠状态的网站时,加载时 间将更长,但对于后续请求,服务器的响应速度将更快。这就是Heroku能够提供免费部 署的原因所在。

目录
相关文章
|
4月前
|
测试技术 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,因其功能丰富且文档详尽。
|
6月前
|
Python
python知识点
【8月更文挑战第27天】python知识点
3416 2
WK
|
6月前
|
存储 机器学习/深度学习 JSON
Python入门知识点
Python入门覆盖历史、设计理念、变量、数据类型、控制结构等。了解Python的发展,掌握动态类型的灵活性,熟悉整数、浮点数、字符串等数据类型。学会if/else、for/while循环构建逻辑流程,使用def定义函数,lambda快速创建匿名函数。通过类实现面向对象编程,利用模块和包组织代码。掌握try-except处理异常,open()进行文件操作。利用标准库和第三方库增强功能,理解集合、字典、列表推导式的应用,深入魔法方法、递归、装饰器等高级特性,以及上下文管理器和字符串、列表、元组的操作技巧。
WK
51 0
|
3月前
|
缓存 Java 索引
[Python]知识点
本文主要介绍了Python的一些高级知识点和使用细节,包括pip的使用、内置函数、列表、元组、字典、集合、变量、Lambda表达式、面向对象编程、异常处理、模块及标准库等。文章适合有一定Python基础的读者,重点在于深入理解和掌握Python的高级特性。文中还提供了大量示例代码,帮助读者更好地理解和应用这些知识点。
62 1
[Python]知识点
|
4月前
|
安全 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文件供直接导入使用。
140 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
4月前
|
网络协议 数据库连接 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
|
4月前
|
调度 Python
python知识点100篇系列(20)-python协程与异步编程asyncio
【10月更文挑战第8天】协程(Coroutine)是一种用户态内的上下文切换技术,通过单线程实现代码块间的切换执行。Python中实现协程的方法包括yield、asyncio模块及async/await关键字。其中,async/await结合asyncio模块可更便捷地编写和管理协程,支持异步IO操作,提高程序并发性能。协程函数、协程对象、Task对象等是其核心概念。
|
4月前
|
Python Windows
python知识点100篇系列(24)- 简单强大的日志记录器loguru
【10月更文挑战第11天】Loguru 是一个功能强大的日志记录库,支持日志滚动、压缩、定时删除、高亮和告警等功能。安装简单,使用方便,可通过 `pip install loguru` 快速安装。支持将日志输出到终端或文件,并提供丰富的配置选项,如按时间或大小滚动日志、压缩日志文件等。还支持与邮件通知模块结合,实现邮件告警功能。
python知识点100篇系列(24)- 简单强大的日志记录器loguru
|
4月前
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
python知识点100篇系列(23)- 使用stylecloud生成词云
|
4月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。

热门文章

最新文章