脚本别起名叫pandas.py

你顺手把第一个练习文件存成了.py , 第二天呢在写正文脚本, 就开始出现报错"" 竟然表示没有"" , 你卸载之后又重装了三次 , 还更换了镜像源, 之后重启了电脑 , 甚至都开始怀疑是不是系统坏了, 可问题依旧没有任何改变。

毫无任何毛病, 所装配的位置同样是正确的。当需要一个库之际, 首先去翻动你脚本所在的这个文件夹, 若翻找不着方才去翻动已装配好的库。你那个.py文件排列在正牌之前, 自始至终获取到的皆是你自身那个几乎空白的练习文件。其里面自然是没有的。这并非是「装配损坏」, 而是排队顺序所导致的问题, 因而朝着pip那边使出再大的力气也是毫无用处的。

一条确定的判断依据, 两个步骤的结束收尾, 一项从此以后不再违犯的命名规则。进入的地方全都在你所拥有的项目文件夹里边, 跟包管理工具、关联用于获取软件包的远程服务器、和软件版本完全没有联系。

第一步|让这个库自报家门

新开一格或者在脚本最上面写 ; print(.)

当打出来呈现为 site - 后面跟着那一长串路径时, 这表明库自身是完好的;而若打出来是你自身项目文件夹当中的路径, 那就意味着已经中招了。这一行对于任何库而言都是成立的。numpy 如此, 其他常见库也全都一样。往后但凡遇到常见库报错, 首先要打出这一行, 之后再去考虑重新安装。

转瞬之间, 就成功将称作「装坏了」跟名为「被自己的文件挡住了」, 这两类完全不一样的状况, 给区分开来了耶。

第二步|改名,然后重启一次

将.py更改为其他名称(像是练习.py), 随后重新启动会话: 点击重启内核, 在 终端里从 当前交互式解释器 中退出, 再次进入一次。

仅仅改名是不行的, 然而其原因并非是那个流传范围极为广泛的"还顶着"。我进行过实际测试(版本为3.9.6), 当源文件进行改名后, 其中那个同名的.pyc文件便不再被采用, 而是会回落到正规的库中。真正致使你感觉"改了也没有作用"的是仍然处于活跃状态的那个会话, 一旦模块进入了sys., 不管磁盘上有没有对其进行改名, 它都不会再回头查看。所以在改完名之后, 重启相比于删除缓存更为关键。

重新启动之后, 再次去运行一次第一步所显示的那一行路径, 致使路径回落到 site-后, 这件事情便达成了闭环状态。

第三步|定一条从此不改的命名规矩

脚本全都按照「动作_对象.py」这样的形式来命名: 月度损益.py考勤表.py应收明细.py

这份危险名单的长度超出了大多数人的想象: 其中包含csv.py, 还有json.py, 以及.py, time.py, email.py, 还有.py, .py, types.py, .py。这些统统都是标准库, 一旦撞上其中任何一个, 在离你十万八千里之遥的地方就会出现报错情况。若带上业务前缀, 自然而然就不会撞上哟。

多打七八个字符,换掉一整类在库里怎么查都查不出来的怪错。

毛病一: 你文件夹当中存在一个名为 csv.py 的文件, 然而报错却出现在一个你压根儿就没动过的库里, 栈里面满满的都是内部的路径, 和 csv 这俩字丝毫没有任何关联。

缘由在于你自身未曾处理过csv, 然而内部却需要运用它;在前往csv之处时, 同样是先去翻动当前目录, 所获取到的乃是你那份文件, 受害者为他人,行凶者是你, 故而报错始终都不会将矛头指向你。

碰上报错栈当中冒出来一个你整个儿不熟悉的库名之际, 将项目文件夹里头所有 .py结尾的 文件名称逐一罗列出来, 跟标准库名去对照一回。这一步骤仅仅需要十多秒, 比按照栈往下读要快出许多。

坑二: 你已然对文件进行了改名操作, 再次运行一回, 呈现的依旧是原来的模样, 连一个字都未曾有丝毫改变。

因为存在两条路, 这跟大多数教程所讲的, 全然不是一码事。其一, 是你于同一个仍旧存活的会话里重新运行, (关于格子、交互式解释器), 一旦模块进入了sys, 便不会再回头去查看磁盘, 即便你更改了文件名, 它依旧会将原来那份交付给你;其二, 是在同一层还躺着一个裸露的.pyc, 注意, 它是直接躺在.py原本所在的位置, 而非在文件夹里, (系统)会把它当作模块本身来使用。

先启动重新启动, 重新启动内核, 在终端里面退出解释器后再次进入, 然后再查看一眼那个文件夹, 看看有没有没有经过外包装且相同名字 .pyc 文件, 要是有就把它删除掉。至于里面那个, 我在 3.9.6 那个版本上尝试过: 源文件一旦更改名字它就不再产生效力, 删除或者不删除都可以。你自己所使用的版本上去想要进行确认的话, 依照这两条规定各自运行一遍就能够知晓了。

问题三: 你把那个.py文件给删除掉了, 然后去创建一个名为 的文件夹用来放置自己的工具函数, 在这个文件夹里面放置了.py, 然而最终结果依旧是出现报错的情况。

其缘由在于, 带有.py 的文件夹, 在某种特定情形看, 便就如同是一个包, 它与一个.py 文件具备相同的身份地位, 并且同样是排列在正规库的前面。

文件夹也别采用库名。顺便告知一条经过实际检测得出的结论: 没有带.py的空文件夹不会替换掉正规的库(我选用json进行测试, 得到的依旧是标准库那个), 所以看到同名文件夹先别慌张, 先查看里面有没有.py。要是你心里不踏实, 在自己的环境中同样创建一个进行一次测试。

坑四: 你于其中碰到了完全相同的事, 然而这个文件是你新创建的, 你压根就未曾创建过任何有着相同名字的文件。

那是因为, 在其搜索路径之中, 存在着一条用来代表当前工作目录的空字符串 '', 此空字符串 '' 排列在 site- 之前, 而在那个文件夹里, 也就是 .ipynb 所在的目录里, 或许会有他人早前留下的 py 文件, 又或者是你所下载的示例包解压之后得到的。

于格子跟前跑, os; print(os.()), 内核的工作目录便是那.ipynb坐落的文件夹, 依照这个路径去瞅一瞅有啥。切莫使用sys.path, 我于6.29.5/6.31.0/7.3.0这三套上实际测试, 它打印出来的乃是标准库的.zip, 并非你那个笔记本目录;若想查看全面就print(sys.path), 寻觅那条空字符串 '' 的所在位置。别默认「我未曾创建过便不会存在」。

动手前对一遍:

1、报 之前,先跑过 print(库名.) 了吗

2、于项目文件夹之中, 是否存在与库有着相同名称的, 名为.py的文件, 及名为numpy的文件, 再及名为csv的文件, 还有名为json的文件, 更有名为time的文件, 另外还有名为email的文件呢?

3、改完名,会话重启过吗, 重启内核,终端里退出解释器重进

4、那一层, 有没有, 躺着, 一个, 裸的, 同名, .pyc, (不在, 里的, 那种)。

5、有没有拿库名当文件夹名,那个文件夹里有 .py 吗

从今日开始为脚本命名, 全都带上业务前缀, 月度损益.py考勤表.py 便是例。多增添七八个字符这件事, 换掉的乃是一整类你于库里怎样查找都找寻不通的怪异错误。这属于这一章当中性价比最为高的一条习惯习惯。

这是系列第7篇,按序号顺着看。

相关推荐
2601_962295334 天前
志学老人学Ai 4:安装开发Python源程序 的Pycharm编程软件
人工智能·pycharm·量化交易·python开发·集成开发环境
2601_962099685 天前
国家大学生就业服务平台
python开发·aiagent·智能体开发·模型调优·数字教育
梁辰兴14 天前
软件工程:程序设计风格
软件工程·代码重构·命名规范·程序设计风格·代码格式·注释规范·良好习惯
人脸核身安全官1 个月前
人脸检测API调用避坑指南:从参数调优到误检率压降实战
python开发·实名认证·api调用·活体检测·人脸检测api·精度调优·face++
深海鱼肝油ya2 个月前
基于FastAPI的AI智能体Web系统构建(二)
人工智能·fastapi·python开发·异步框架·agent开发
la_vie_est_belle4 个月前
纯Python游戏引擎 新增可视化一键打包功能
python·游戏开发·pygame·python开发·pygame studio
Irene19918 个月前
Vue3 中使用的命名规则 和 实际开发命名规范总结
vue.js·命名规范
点云SLAM8 个月前
C++内存泄漏检测之编译期 /运行时工具(ASan/Valgrind)
开发语言·c++·内存管理·错误排查·内存泄漏检测工具·valgrind工具·asan工具
mg6688 个月前
0基础开发学习python工具_____用 Python 从零写一个贪吃蛇游戏:完整实现 + 打包成 .exe(附源码)
python·游戏·pygame·python开发