Python进阶实际应用开发实战(一)

news2024/11/26 0:33:04

目录

  • 原型设计和环境
    • 环境设置
    • 创建新项目

原型设计和环境

原书第一章内容

环境设置

对于一个项目我们需要安装库并管理依赖项,这意味着需要有一个虚拟环境。我们使用pipenv来指定依赖项。

python -m pip install --user pipenv

在命令行中启动Python脚本的时候,经常会用到-m参数,那么-m起了什么作用呢?
先看看 python --help 给出的信息:
在这里插入图片描述
意思是将库中的python模块用作脚本去运行。
将模块当做脚本去启动有什么用?
① python xxx.py
② python -m xxx.py
这是两种加载py文件的方式:
①叫做直接运行,此时脚本的__name__为’main’;
②相当于import,叫做当做模块来启动,相当于import,此时脚本的__name__为’xxx’。这种启动方式时最好不要带后缀.py。
主要是影响sys.path这个属性。sys.path是一个list,是当前Python解析器运行的环境,Python解析器会在这些目录下去寻找依赖库。python导入文件或模块时默认会先在sys.path里找其的路径。
通过不同方式启动现有的文件run.py,看看结果有何不同。
在这里插入图片描述
对比一下就可以发现,-m运行比直接运行仅是多了一个’’,也就是当前所在的目录。
直接启动:把run.py文件所在的目录放到了sys.path属性中。
模块启动:把也就是当前路径放到了sys.path属性中
那么,在工作场景中有什么用呢?
在这里插入图片描述现在就尝试以两种不同的方法启动run.py文件。在这里插入图片描述接下来分析一下原因。
需要注意的是,当需要启动的py文件引用了一个模块,在启动的时候需要考虑sys.path中有没有import的模块的路径。这个时候,到底是使用直接启动,还是以模块的启动?目的就是把import的那个模块的路径放到sys.path中。
导入一个模块时,解释器先在当前目录中搜索它。如果没有找到的话,就会到 sys.path变量中给出的目录列表中查找。
我们要启动package2文件夹下的run.py,所需模块在package目录中。因此当我们直接执行run.py时,只是把run.py文件所在的目录放到了sys.path属性中,sys.path并没有把package目录收录。故会报错。
当我们使用-m参数时,把当前路径放到了sys.path属性中。当前路径包含了package目录与package2目录,故均在sys.path中。运行成功。
pycharm如何设置.py作为脚本启动,即带-m参数运行
首先是如何以python xxx.py方式直接运行:
Edit Configurations选项中,选择的是Script path。输入框是run.py的绝对路径。
在这里插入图片描述
如何以python -m xxx方式运行,将xxx.py作为模块运行(感谢stackoverflow):
Edit Configurations选项中,点击Script path输入框左侧的倒三角,选择Module name,右边输入框输入xxx,即模块的名字,不带.py后缀。然后就可以在Parameters设置任何参数。这种方法不需要在任何地方包含 -m 参数。
在这里插入图片描述详情请参考: https://blog.csdn.net/djw931017/article/details/88981481

创建新项目

首先 ,为项目创建一个新目录,并切换到该目录。我们想把ipykernel声明为开发依赖包,这个包中包含能够管理python和jupyter之间的接口,我们想确保能够在新创建的独立环境中使用这个包及其库代码。

mkdir advancedpython
cd  advancedpython
pipenv install ipykernel --dev
pipenv run ipython kernel install --user --name=advancedpython
cd advancedpython
jupyter notebook

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

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

相关文章

分布式锁概念

什么是分布式锁 方案一:SETNX EXPIRE 方案二:SETNX value值是(系统时间过期时间) 方案三:使用Lua脚本(包含SETNX EXPIRE两条指令) 方案四:SET的扩展命令(SET EX PX NX) 方案五…

chatgpt赋能Python-aidlearning安装pycharm

Aid Learning: 如何安装PyCharm PyCharm是一款由JetBrains开发的用于Python编程的集成开发环境(IDE)。它提供了丰富的编辑器和调试工具,可以帮助开发者更高效地编写Python代码。本文将介绍如何安装PyCharm。 安装前准备工作 在安装PyCharm…

vue diff算法与虚拟dom知识整理(8) 手写patch实现简易版的节点第一次上dom树

上一文 我们整理了一下 patch 函数的整体过程 我不知道大家有没有保留我们之前学手写H函数时的那个案例 我们要将index.jsi还原成这样 参考代码如下 import h from "./snabbdom/h";const dom1 h("div",{props: {class: "dom"} },"文本测试…

Qt QJson 使用

文章目录 1. 简介2. 简单实例3. 结果 1. 简介 QJson 是一个用于 Qt 应用程序的 JSON 解析和生成库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读性和可扩展性,常用于 Web 应用程序中。QJson 将 …

Python通过natcap.invest库调用InVEST模型批处理数据(Carbon Storage and Sequestration模块)

InVEST(Integrated Valuation of Ecosystem Servicesand Tradeoffs)生态系统服务和权衡的综合评估模型,旨在通过模拟不同土地覆被情景下生态系统物质量和价值量的变化。它提供了多种生态系统服务功能评估,包括了淡水生态系统评估、…

Liunx压缩命令 - gz

gz命令详解及使用 Linux中gz命令的全称是gzip,它是一种常用的压缩程序,可将文件或目录压缩为.gz格式,以节省存储空间,同时也可以通过解压缩操作重新获取原始文件掌握 gzip 命令,可以帮助我们更加高效地进行文件压缩与…

视频编码测试平台CodecWar

​在视频编码的研究和开发中,我们经常需要对编码器的性能进行比较,一般的做法是构建一个数据集,然后将两个编码器在同一个配置上(LD,RA,AI等)使用不同参数(CQP下一般为4个QP值)编码,…

Py之pymc:pymc的简介、安装、使用方法之详细攻略

Py之pymc:pymc的简介、安装、使用方法之详细攻略 目录 pymc的简介 pymc的安装 pymc的使用方法 1、时序性任务 (1)、使用 Euler-Maruyama 方案推断 SDE 的参数 pymc的简介 PyMC(以前称为PyMC3)是一个专注于高级马尔科夫链蒙特卡洛&#x…

⑤电子产品拆解分析-人体感应灯

⑤电子产品拆解分析-人体感应灯 一、功能介绍二、电路分析以及器件作用三、原理图复现与学习 一、功能介绍 ①感应人体活动亮灯20S;②Micro-USB进行锂电池充电; 二、电路分析以及器件作用 三、原理图复现与学习 R1为下拉电阻,防止上电因芯…

功率放大器的选型原则和方法是什么

功率放大器是一种能够将低电平信号放大到足够高的电平以驱动负载的电子器件。在各种电子设备中,功率放大器被广泛应用,如音响系统、电视广播、汽车音响、射频通信等。因此,正确选型功率放大器非常重要,可以提高设备的性能和可靠性…

Web3的应用及发展

Web3兼具去中心化和交互性,打造了一个全新的互联网模式。在其中,用户可以绕过中介直接交互。dApp用户无需许可即可访问金融工具,以点对点的方式交易加密资产,获得参数型保险理赔,通过NFT交易可验证所有权的数字艺术品&…

[网鼎杯 2020 青龙组]bang 复现

一.前言 在NSSCTF练习安卓逆向,第一次遇到安卓脱壳题 大佬的题解只有一句话"frida-dexdump一把嗦" 听起来容易做起来难,还遇到了安卓虚拟机的玄学bug,折磨了我很久,好在最终使用真机成功dump并得到flag 题目来源:[网鼎杯 2020 青龙组]bang 如果直接用jadx打开会发现…

Vector - CAPL - CANoe DBC消息相关自动化_01

目录 getFirstCANdbFilename -- 获取数据库的文件名 代码示例 getFirstCANdbName -- 获取数据库的名称 代码示例 getSignalName -- 获取报文的信号名称 getMessageAttrInt -- 获取信号属性值 代码示例 getFirstCANdbFilename -- 获取数据库的文件名 功能:找出…

Python: 结合多进程和 Asyncio 以提高性能

动动发财的小手,点个赞吧! 简介 多亏了 GIL,使用多个线程来执行 CPU 密集型任务从来都不是一种选择。随着多核 CPU 的普及,Python 提供了一种多处理解决方案来执行 CPU 密集型任务。但是直到现在,直接使用多进程相关的…

Pytrack 函数整理

1 distance 1.1 add_edge_lengths pytrack.graph.distance.add_edge_lengths(G, precision3) 将每条边的长度加到图里面去 1.1.1 主要参数 G路网图precision每一条边长度,保持几位小数 1.2 enlarge_bbox pytrack.graph.distance.enlarge_bbox(north, south, …

僵尸进程的避免 守护进程的创建 线程的创建,阻塞,数据传递 5.15

父子进程相关知识&#xff1a; 1.子进程结束时&#xff0c;系统 会立即自动刷新行缓存 2.手动结束进程&#xff1a; exit() exit(int status)&#xff1a;结束当前调用的进程&#xff0c;自动刷新缓存 标准库函数 头文件&#xff1a;#include <stdlib.h> _exit() …

压缩技术与常见linux解压/压缩命令总结

文章目录 1 RAR1.1 参数介绍1.2 压缩/解压1.3 分卷压缩/解压 2 7-Zip2.1 常用参数2.2 使用2.3 分卷压缩/解压 3 解压/压缩命令 总结 1 RAR RAR是一种专利文件格式&#xff0c;用于数据的压缩打包。 提供了强力压缩、分卷、加密和自解压模块 官方网址&#xff1a;https://www…

公有云——阿里云ECS服务器(IaaS)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.了解云服务器的基础概念 1.云服务器的基础概念&#xff08;云服务器选择…

用IDEA写的第一个JavaWeb项目(保姆级)

任何事情只有0次和无数次&#xff0c;项目新建了第一个就有第二个 从第一次的略显青涩到后面的轻车熟路&#xff0c;区别就是第一次 ——Lungcen 在IDEA中新建一个web项目&#xff0c;有好几种方法。本人用的方法是通过maven构建工具来构建java项目的框架。对于web服务器的选择…

日志—加索引优化select

今天工作中遇到一个小问题&#xff0c;一个搜索接口&#xff0c;要加一个2个字段用于搜索 分析&#xff1a;这两个字段要在子表中去查询&#xff0c;查看原来mapper中的接口&#xff0c;已经连了N个子表&#xff0c;sql速度在10秒左右。 加上了新的子表&#xff0c;然后去试了…