- 博客(62)
- 收藏
- 关注
原创 Lua 第15部分 数据文件和序列化
对于文件格式来说,表构造器提供了一种有趣的替代方式。只需在写人数据时做一点额外的工作,就能使得读取数据变得容易。这种技巧就是将数据文件写成 Lua 代码,当这些代码运行时,程序也就把数据重建了。使用表构造器时,这些代码段看上去会非常像是一个普通的数据文件。下面通过一个示例来进一步展示处理数据文件的方式。如果数据文件使用的是诸如 csv( 逗号分隔值)或 XML 等预先定义好的格式,那么我们能够选择的方法不多。不过,如果处理的是出于自身需求而创建的数据文件,那么就可以将 Lua 语言的构造器用于格式定义。
2025-04-30 05:33:03
591
原创 Lua 第14部分 数据结构
Lua 语言中的表并不是一种数据结构,它们是其他数据结构的基础。我们可以用 Lua 语言中的表来实现其他语言提供的数据结构,如数组、记录、列表、队列、集合等。而且,用Lua 语言中的表实现这些数据结构还很高效。在像 C 和 Pascal 这样更加传统的语言中,通常使用数组和列表(列表=记录+指针)来实现大多数数据结构。虽然在 Lua 语言中也可以使用表来实现数组和列表,但表实际上比数组和列表强大得多。使用表时,很多算法可以被简化。
2025-04-29 11:28:56
1288
原创 Lua 第13部分 位和字节
Lua 语言从5.3 版本开始提供了针对数值类型的一组标准位运算符。与算术运算符不同的是,位运算符只能用于整型数。位运算符包括&( 按位与)、|(按位或)、~(按位异或)、>>(逻辑右移)、<<(逻辑左移)和一元运算符 ~(按位取反)。(请注意,在其他一些语言中, 异或运算符为 ^ , 而在 Lua 语言中^ 代表幂运算。所有的位运算都针对构成一个整型数的所有位。在标准 Lua 中,也就是 64 位。这对于使用 32 位整型数的算法可能会成为问题(例如,SHA-2 密码散列算法)。
2025-04-28 14:41:54
1040
原创 Lua 第12部分 日期和时间
Lua 语言的标准库提供了两个用于操作日期和时间的函数,这两个函数在 C 语言标准库中也存在,提供的是同样的功能。虽然这两个函数看上去很简单,但依旧可以基于这些简单的功能完成很多复杂的工作。Lua 语言针对日期和时间使用两种表示方式。第1种表示方式是一个数字,这个数字通常是一个整型数。尽管并非是 ISO C 所必需的,但在大多数系统中这个数字是自一个被称为纪元的固定日期后至今的秒数。特别地,在 POSIX 和 Windows 系统中这个固定日期均是 Jan 01, 1970, 0:00 UTC。
2025-04-27 23:27:31
1193
原创 Lua 第11部分 小插曲:出现频率最高的单词
不过,就像一些有心的读者可能已经注意到的那样,我们并没有可以用来排序的单词列表。在本章中,我们要开发一个读取并输出一段文本中出现频率最高的单词的程序。像之前的小插曲一样,本章的程序也十分简单但是也使用了诸如迭代器和匿名函数这样的高级特性。最后一个循环输出了结果,也就是前 n 个单词及它们对应的计数值。默认情况下,如果没有参数,它会输出所有的单词。该程序的主要数据结构是一个记录文本中出现的每一个单词及其出现次数之间关系的表。要读取文本,可以遍历每一行,然后遍历每一行的每一个单词。
2025-04-27 16:25:24
409
原创 Lua 第10部分 模式匹配
字符串标准库提供了基于模式的 4 个函数。我们已经初步了解过函数find和gsub,其余两个函数分别是match和gmatch(Global Match 的缩写)。函数用于在指定的目标字符串中搜索指定的模式。最简单的模式就是一个单词,它只会匹配到这个单词本身。例如,模式’ hello ’ 会在目标字符串中搜索子串 ” hello ”。函数 string.find 找到一个模式后,会返回两个值: 匹配到模式开始位置的索引和结束位置的索引。如果。
2025-04-27 15:26:23
778
原创 Lua 第9部分 闭包
在 Lua 语言中,函数是严格遵循词法定界的第一类值。“第一类值”意味着 Lua 语言中的函数与其他常见类型的值(例如数值和字符串)具有同等权限: 一个程序可以将某个函数保存到变量中(全局变量和局部变量均可)或表中,也可以将某个函数作为参数传递给其他函数,还可以将某个函数作为其他函数的返回值返回。“词法定界”意味着 Lua 语言中的函数可以访问包含其自身的外部函数中的变量( 也意味着 Lua 语言完全支持 Lambda 演算)。
2025-04-23 21:29:12
1033
原创 Lua 第8部分 补充知识
Lua 语言中的变量在默认情况下是全局变量,所有的局部变量在使用前必须声明。与全局变量不同,局部变量的生效范围仅限于声明它的代码块。请注意,上述示例在交互模式中不能正常运行。因为在交互模式中,每一行代码就是一个代码段(除非不是一条完整的命令)。一旦输入示例的第二行, Lua 语言解释器就会直接运行它并在下一行开始一个新的代码段。这样,局部( local )的声明就超出了原来的作用范围。解决这个问题的一种方式是显式地声明整个代码块, 即将它放入一对do-end中。
2025-04-22 17:28:58
848
原创 Lua 第7部分 输入输出
由于 Lua 语言强调可移植性和嵌入性 , 所以 Lua 语言本身并没有提供太多与外部交互的机制。在真实的 Lua 程序中,从图形、数据库到网络的访问等大多数 I/O 操作,要么由宿主程序实现,要么通过不包括在发行版中的外部库实现。单就 Lua 语言而言,只提供了 ISO C语言标准支持的功能, 即基本的文件操作等。在这一章中,我们将会学习标准库如何支持这些功能。
2025-04-22 11:13:56
864
原创 Lua 第6部分 函数
在 Lua 语言中,函数( Function )是对语句和表达式进行抽象的主要方式。函数既可以用于完成某种特定任务(有时在其他语言中也称为过程 ( procedure )或子例程 ( s ubroutine) ),也可以只是进行一些计算然后返回计算结果。在前一种情况下,我们将一句函数调用视为一条语句;无论哪种情况,函数调用时都需要使用一对圆括号把参数列表括起来。即使被调用的函数不需要参数, 也需要一对空括号 ()。Lua 语言也为面向对象风格的调用。
2025-04-16 14:25:46
609
原创 Lua 第5部分 表
表( Table )是 Lua 语言中最主要(事实上也是唯一的)和强大的数据结构。使用表,Lua语言可以以一种简单、统一且高效的方式表示数组、集合、记录和其他很多数据结构。Lua语言也使用表来表示包( package )和其他对象。当调用函数 math.sin 时 ,我们可能认为是“调用了 math 库中函数 sin ”;而对于 Lua 语言来说,其实际含义是“以字符串sin ” 为键检索表 math ”。
2025-04-07 17:30:57
1010
原创 Lua 第1-4部分 语言基础
如果操作数是整数,那么取模运算的结果也是整数。因此, 取模运算也遵从与算术运算相同的规律,即如果两个操作数均是整型值, 则结果为整型,否则为浮点型。对于整型操作数而言,取模运算的含义没什么特别的,其结果的符号永远与第二个操作数的符号保持一致。特别地,对于任意指定的正常量 K ,即使 x 是负数,表达式 x%K 的结果也永远在 [ 0, K - 1 ] 之间。例如,对于任意整型值 i ,表达式 i%2 的结果均是 0 或 1。对于实数类型的操作数而言,取模运算有一些不同。
2025-04-03 16:07:26
976
原创 Lua 第0部分 环境的安装
这个对于加密系统是非常重要的,如果使用sublime编辑器或者其他编辑器编辑脚本,文件上面会自动带锁,导致Lua脚本不能正常运行而报错。也曾使用可执行程序安装过,但由于电脑是加密电脑,最后都已失败告终。使用此方式安装可以安装成功,并且能够运行Lua脚本,前提是。必须使用安装后自带的SciTE编辑器,使用该编辑器编写的问脚本文件是没有经过加密的。这是自动安装的Lua版本号。
2025-01-24 14:59:22
947
原创 第十九章 使用 LNMP 架构部署动态网站环境
为了能够让网站服务支持更多的功能,需要在编译过程中添加额外的参数,其中较为重要的是使用 prefix 参数指定服务将被安装到哪个目录,方便后面找到和调用它。前面的注释符(#)来启用虚拟主机功能,然后将第 69 行后面对应的网站根目录修改为/usr/local/nginx/html,其中的 fastcgi_script_name 参数用于指代脚本名称,也就是用户请求的 URL。在初始化的最后阶段,系统会给用户分配一个初始化的临时密码,大家一定要保存好,例如下面示例中分配的密码是。运行二进制的服务程序安装包。
2024-12-10 17:14:17
2055
原创 第十八章 使用 PXE+Kickstart 无人值守安装服务
毕竟,我们使用 PXE + Kickstart 部署的是一套“无人值守安装系统服务”,而不是“无人值守传输系统光盘镜像服务”,因此还需要让客户端主机能够一边获取光盘镜像,一边自动帮用户填写好安装过程中出现的选项。这样,在无人值守安装系统时,会从这个需求清单中找到相应的选项值,从而免去了手动输入之苦。大家还需要单击图 19-13 中的“自定义硬件”按钮,在弹出的如图 19-14 所示的界面中,把“网络适配器”设备同样也设置为“仅主机模式”(这个步骤非常重要),移除其他不需要的硬件,然后单击“确定”按钮。
2024-12-09 10:47:47
1049
原创 第十七章 使用 MariaDB 数据库管理系统
开源软件是全球黑客、极客、程序员等技术高手在开源社区的大旗下的公共智慧的结晶,自己的劳动成果被其他公司商业化自然也伤了一大批开源工作者的心,因此 MySQL 项目的创始人重新研发了一款名为 MariaDB 的全新数据库管理系统。为了保障数据库系统的安全性,以及让其他用户协同管理数据库,可以在 MariaDB 数据库管理系统中为他们创建多个专用的数据库管理用户,然后再分配合理的权限,以满足他们的工作需求。比如我们刚刚创建的用于保存图书信息的 mybook 表单,随着时间的推移,里面的图书信息也会越来越多。
2024-12-06 16:20:00
1467
原创 第十六章 使用 iSCSI 服务部署网络存储
硬盘是计算机硬件设备中重要的组成部分之一,硬盘存储设备读写速度的快慢也会对服务器的整体性能造成影响。硬盘存储结构、RAID 磁盘阵列技术以及LVM 技术等都是用于存储设备的技术,尽管这些技术有软件层面和硬件层面之分,但是它们都旨在解决硬盘存储设备的读写速度问题,或者竭力保障存储数据的安全。为了进一步提升硬盘存储设备的读写速度和性能,人们一直在努力改进物理硬盘设备的接口协议。当前的硬盘接口类型主要有IDE、SCSI 和 SATA这 3 种。
2024-12-06 15:16:42
1181
原创 第十五章 Ansible 服务实现自动化运维
相较于 Chef、Puppet、SaltStack 等 C/S(客户端/服务器)架构的自动化工具来讲,尽管 Ansible 的性能并不是最好的,但由于它基于 SSH 远程会话协议,不需要客户端程序,只要知道受管主机的账号密码,就能直接用 SSH 协议进行远程控制,因此使用起来优势明显。因此,要进行 3 次判断。在使用 Ansible 的常规模块时,都是采用“查询版主示例并模仿”的方式搞定的,这里为了增加难度,我们再提出个新需求,即能否让每台主机上运行的 httpd 网站服务都能显示不同的内容呢?
2024-12-05 17:21:33
961
原创 第十四章 使用 Postfix 与Dovecot 部署邮件系统
在 aliases 邮件别名服务的配置文件中可以看到,里面定义了大量的用户别名,这些用户别名大多数是 Linux 系统本地的系统账户,而在冒号(:)间隔符后面的root 账户则是用来接收这些账户邮件的人。用户别名可以是 Linux 系统内的本地用户,也可以是完全虚构的用户名字。填写电子邮件账户信息,在图 15-7 所示的页面中,在“您的姓名”文本框中输入您的名字(可以为自定义的任意名字),在“电子邮件地址”文本框中输入服务器系统内的账户名和发件域,在“密码”文本框中输入该账户在服务器内的登录密码。
2024-12-05 14:04:31
9493
2
原创 第十三章 使用 DHCP 动态管理主机地址
借助于 DHCP,不仅可以为主机自动分配网络参数,还可以确保主机使用的 IP 地址是唯一的,更重要的是,还能为特定主机分配固定的 IP 地址。在日常工作中,Windows 10 是主流的桌面操作系统,所以只要确保两个主机都处于同一个网络模式内,然后像图 14-5 那样设置 Windows 系统的网络为 DHCP 模式,再稍等片刻即可自动获取到网卡信息了,如图 14-6 所示。需要说明的是,如果您刚刚为这台主机分配了 IP 地址,由于它的 IP 地址租约时间还没有到期,因此不会立即换成新绑定的 IP 地址。
2024-11-27 17:40:56
807
原创 第十二章 使用 BIND 提供域名解析服务
在 DNS 域名解析服务中,反向解析的作用是将用户提交的 IP 地址解析为对应的域名信息,它一般用于对某个 IP 地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。因此,通过部署从服务器不仅可以减轻主服务器的负载压力,还可以提升用户的查询效率。bind 服务程序的配置并不简单,因为要想为用户提供健全的 DNS 查询服务,要在本地保存相关的域名数据库,而如果把所有域名和 IP 地址的对应关系都写入到某个配置文件中,估计要有上千万条的参数,这样既不利于程序的执行效率,也不方便日后的修改和维护。
2024-11-27 15:59:53
1069
原创 第十一章 使用 Samba 或 NFS 实现文件共享
例如,如果想要把/nfsfile 目录共享给 192.168.10.0/24 网段内的所有主机,让这些主机都拥有读写权限,在将数据写入到 NFS 服务器的硬盘中后才会结束操作,最大限度保证数据不丢失,以及把来访客户端 root 管理员映射为本地的匿名用户等,则可以按照下面命令中的格式,将表中的参数写到 NFS 服务程序的配置文件中。在正确输入 Samba 服务数据库中的 linuxprobe 账户名以及使用 pdbedit 命令设置的密码后,就可以登录到 Samba 服务程序的共享界面中了,如图所示。
2024-11-26 15:40:38
858
原创 第十章 使用vsftpd服务传输文件
一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方式。今天的互联网是由几千万台个人计算机、工作站、服务器、小型机、大型机、巨型机等具有不同型号、不同架构的物理设备共同组成的,而且即便是个人计算机,也可能会装有 Windows、Linux、UNIX、macOS 等不同的操作系统。为了能够在如此复杂多样的设备之间解决文件传输的问题,文件传输协议(FTP)应运而生。FTP 是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21 号端口,其中。
2024-11-25 15:36:43
1217
原创 第九章 使用Apache服务部署静态网站
1970 年,作为互联网前身的 ARPANET(阿帕网)已初具雏形,并开始向非军用部门开放,许多大学和商业机构开始陆续接入。虽然彼时阿帕网的规模(只有 4 台主机联网运行)还不如现在的局域网成熟,但是它依然为网络技术的进步打下了扎实的基础。想必大多数人都是通过访问网站而开始接触互联网的吧。我们平时访问的网站服务就是Web 网络服务,一般是指允许用户通过浏览器访问互联网中各种资源的服务。如图所示,
2024-11-20 23:17:41
2471
原创 第八章 使用ssh服务管理远程主机
需要注意的是,如图 9-12 所示,左侧的 ens160 及 ens192 这些原本独立的网卡设备此时需要被配置成为一块“从属”网卡,服务于右侧的 bond0“主”网卡,不应该再有自己的IP 地址等信息。如果我们在公司网络中使用笔记本电脑时需要手动指定网络的 IP 地址,而回到家中则是使用 DHCP 自动分配 IP 地址,这就需要麻烦地频繁修改IP 地址,但是使用了网络会话功能后一切就简单多了-----只需在不同的使用环境中激活相应的网络会话,就可以实现网络配置信息的自动切换了。记得最后保存文件并退出。
2024-11-19 22:26:26
924
原创 第七章 使用iptables与firewalld防火墙
在图 8-7 所示的局域网中有多台 PC,如果网关服务器没有应用 SNAT 技术,则互联网中的网站服务器在收到 PC 的请求数据包,并回送响应数据包时,将无法在网络中找到这个私有网络的 IP 地址,所以 PC 也就收不到响应数据包了。换句话说,Linux 系统中其实有两个层面的防火墙,第一种是前面讲到的基于 TCP/IP 协议的流量过滤工具,而 TCP Wrappers 服务则是能允许或禁止 Linux 系统提供服务的防火墙,从而在更高层面保护了 Linux 系统的安全运行。文件来阻止对服务的请求流量。
2024-11-18 14:31:16
923
原创 第六章 使用RAID与LVM磁盘阵列技术
出于成本和技术方面的考虑,需要针对不同的需求在数据可靠性及读写性能上做出权衡,制定出满足各自需求的不同方案。目前已有的 RAID 磁盘阵列的方案至少有十几种,而刘下表所列出的 RAID 0、RAID 1、RAID 5 与 RAID 10 这 4 种最常见。这 4 种方案的对比如表所示,其中 n 代表硬盘总数。RAID 0 技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入各个物理硬盘中。
2024-11-15 17:21:35
746
原创 第五章 存储结构与管理硬盘
但真相不是这样的,/dev 目录中 sda 设备之所以是 a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。是一种通过在硬盘中预先划分一定的空间,然后把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理内存不足的问题。一言以蔽之,“/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为 5 的逻辑分区的设备文件”。
2024-11-14 22:59:36
803
原创 第四节 用户身份与文件权限
1.用户身份与能力Linux 系统的管理员之所以是 root,并不是因为它的名字叫 root,而是因为该用户的身份号码即 UID(User IDentification)的数值为 0。在 Linux 系统中,UID 就像我们的身份证号码一样具有唯一性,因此可通过用户的 UID 值来判断用户身份。在 RHEL 7 系统中,用户身份有下面这些。➢ 管理员 UID 为 0 :系统的管理员用户。➢ 系统用户 UID 为 1~999 :Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务
2024-11-06 17:59:16
663
原创 第三节 Vim编辑器与Shell命令脚本
这里的脚本主要使用 ping 命令来测试与对方主机的网络连通性,而 Linux 系统中的 ping 命令不像 Windows 一样尝试 4 次就结束,因此为了避免用户等待时间过长,需要通过-c 参数来规定尝试的次数,并使用-i 参数定义每个数据包的发送间隔,以及使用-W 参数定义等待超时时间。我们要关注的是 while 条件循环语句中的条件测试始终为 true,因此判断语句会无限执行下去,直到用户输入的数值等于 expr 命令取得的数值后,才运行 exit 0 命令,终止脚本的执行。
2024-11-05 17:17:32
700
原创 第二节 管道符、重定向与环境变量
注:这次的输出结果与讲解wc命令时不同:没有了文件名称,这是因为此前使用的“wc -l /etc/passwd”是一种非常标准的“命令+参数+对象”的执行格式,而这次的“wc -l < readme.txt”则是将 readme.txt 文件中的内容通过操作符导入到命令中,没有被当作命令对象进行执行,因此 wc 命令只能读到信息流数据,而没有文件名称的信息。在 Linux 系统中,变量名称一般都是大写的,命令则都是小写的,这是一种约定俗成的规范。输入重定向的作用是把文件直接导入到命令中。
2024-11-04 15:10:05
920
原创 Python 字符串
Python字符串字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。创建字符串很简单,只要为变量分配一个值即可。Python 访问字符串中的值Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。Python 访问子字符串,可以使用方括号来截取字符串。Python 字符串连接我们可以对字符串进行截取并与其他字符串进行连接,如下实例:>>> var1='hello world'>.
2024-11-01 11:14:01
581
原创 Python 运算符
什么是运算符?本章节主要说明Python的运算符。举个简单的例子4 +5 = 9。 例子中,4和5被称为操作数,"+" 称为运算符。Python语言支持以下类型的运算符:算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级Python算术运算符以下假设变量:a=10,b=20:运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是...
2024-11-01 11:13:41
799
原创 Python 集合运算
1.元素与集合的关系元素要么属于某个集合,要么不属于。2.集合与集合的关系假设两个集合a和b:(1)A是否等于B,即两个集合的元素是否完全一样。表达式:a==ba!=b>>> a=set('python')>>> b=set('baidu')>>> a{'o', 'n', 'h', 'p', 'y', 't'}>>> b{'a', 'i', 'u', 'b', 'd'}>>>
2024-11-01 11:13:17
376
原创 Python 列表(List)
>>> lst[1, 2, 'python', [1, 2, 3]]>>> lst[1]=300>>> lst[1, 300, 'python', [1, 2, 3]]>>> t=tuple(lst)>>> t(1, 300, 'python', [1, 2, 3])>>> >>> >>> t1=(1,2,3)>>> t2=.
2024-11-01 11:12:57
1172
原创 Python 字典(Dictionary)
Python字典(Dictionary)字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值key=>value对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中 ,格式如下所示:d = {key1 : value1, key2 : value2 }注意:dict作为 Python 的关键字和内置函数,变量名不建议命名为dict。键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。>>>ti...
2024-11-01 11:11:52
808
原创 Python 元组
Python元组Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。创建空元组tup1 = ()元组中只包含一个元素时,需要在元素后面添加逗号tup1 = (50,)元组与字符串类似,下标索引从0开始,可以进行截取,组合等。访问元组元组可以使用下标索引来访问元组中的值修改元组元组中的元素值是不允许修改的,但我们可以对元组进行连接组合删除元组元组中.
2024-11-01 11:10:42
277
原创 第一节 新手必须掌握的Linux命令
编码数字”的方式来重复执行某一次的命令。功能是在终端设备上输出指定字符串或变量提取后的值,能够给用户一些简单的提醒信息,亦可以将输出的指定字符串内容同管道符一起传递给后续命令作为标准输入信息进行二次处理,还可以同输出重定向符一起操作,将信息直接写入文件。使用 ifconfig 命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet 参数后面的 IP 地址、ether 参数后面的网卡物理地址(又称为 MAC 地址),以及 RX、TX 的接收数据包与发送数据包的个数及累计流量。
2024-11-01 09:44:32
802
原创 第0节 VMware 17 安装RedHat7.0
选择,可以使用默认的,也可以下拉选择,这个设置只是影响运行快慢,“虚拟化引擎”,暂时默认不勾选,容易出错,后面使用的时候在进行配置。注:选择“安装程序光盘映像文件(iso)(M)”这一项,会默认安装完成版本,不能安装mini版本,且会出现黑屏幕,让你输入文字。安装模式,其中包括最小化模式安装、架构安装、文件系统安装、基础网页架构安装、虚拟器安装、带GUI界面的服务器安装,这里选择带。在4G及以内,选择电脑内存的一半,若超过4G,则内存设置为2G,足够使用,太大浪费。,使用root用户,输入设置的密码。
2024-10-29 17:54:39
852
原创 Python 安装第三方库方法
本文以安装dateutil模块为例:本人的Python安装路径为:D:\Program Files\python\Scripts该路径下有几个重要.exe文件下面安装的时候需要用到其中的pip.exe,如果该目录下没有这pip或pip3.9或pip3其中的一个,那么接下来的在线安装也是不能成功的。步骤一:cmd模式下进入上述文件目录下win+R进入CMD命令模式,然后一步步进入上述指定目录,具体指令见截图步骤二:安装dateutil模块(pip install python.
2022-01-10 15:56:53
3405
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人