PyCharm在遇到模块找不到时,会使用红色波浪线提醒开发者。这本来是一个非常好的功能,但却由于另外一个问题,会给一些Python初学者造成困扰。

这一篇文章,我们讲讲工作区导致的这个问题。

首先我们创建一个login.py文件,它的内容如下:def login(): print('登录服务器')

再创建一个 main.py,它的内容如下:from login import login

print('准备登录服务器')login()

这两个文件的文件结构如下图所示:

此时,你在PyCharm中打开main.py,你就会发现红色的波浪线,如下图所示。

此时如果使用PyCharm来运行这个main.py文件:

你会发现PyCharm运行程序毫无问题:

所以PyCharm有问题?它胡乱报错吗?

实际上不是这样的。

Python有一个工作区的概念,在默认情况下,当你使用 python xxx.py运行一个.py文件时,工作区就是你运行的这个.py文件所在的文件夹。由于login.py和main.py文件是放在同一个文件夹里面的,所以当你直接运行main.py时,Python能够正确知道 fromloginimportlogin是指从和main.py在一起的这个login.py文件中导入login函数。所以一切都是正常的。

当时当你使用PyCharm打开一个项目文件夹时,由于还没有运行这个项目中的某个文件,所以PyCharm会以当前打开的这个项目文件夹为工作区。

在这个例子中,PyCharm会以 代码练习这个文件夹作为工作区。所以当我在main.py中写 fromloginimportlogin的时候,PyCharm会从 代码练习这个文件夹里面去需找login.py文件。显然,由于login.py在chapter_1文件夹里面,不在 代码练习这个文件夹里面,所以PyCharm找不到,于是就会画红色波浪线。

这种情况特别常见于初学者学习别人代码的情况。例如一个Python初学者,他会把所有的爬虫相关代码都放在名为 爬虫代码的文件夹里面,然后他下载了我的一个知乎爬虫项目,这个项目的代码是在一个叫做 ZhihuSpider文件夹里面的。此时,他把 ZhihuSpider文件夹放在 爬虫代码文件夹里面,再用PyCharm打开 爬虫代码文件夹,那么他就会看到 ZhihuSpider项目代码里面有大量的红色波浪线。这不是代码有问题,而是PyCharm自动识别的工作区不正确导致的。

要解决这个问题也非常简单。打开PyCharm的项目设置,定位到 ProjectStructure,如下图所示。

点击红色箭头指向的x符号,删除当前的内容,并添加新的内容,如下图所示:

把真正的项目文件夹路径添加进去,如下图所示:

点击 OK按钮,回到PyCharm,发现它已经可以正确找到 login.py文件了。如下图所示,红色波浪线消失。

在下一篇文章中,我们会讲到由于虚拟环境不一致导致Python代码能运行,但是PyCharm画红色波浪线的情况。

为什么python代码运行不了_为什么Python代码能运行但是PyCharm给我画红线?相关推荐

  1. pycharm 怎么快速生成文件夹结构_为什么Python代码能运行但是PyCharm给我画红线?...

    PyCharm在遇到模块找不到时,会使用红色波浪线提醒开发者.这本来是一个非常好的功能,但却由于另外一个问题,会给一些Python初学者造成困扰. 这一篇文章,我们讲讲工作区导致的这个问题. 首先我们 ...

  2. 我们编写的python代码在运行过程中_在Rust代码中编写Python是种怎样的体验?

    原标题:在Rust代码中编写Python是种怎样的体验? 作者 | Mara Bos,Rust资深工程师 译者 | Arvin,编辑 | 屠敏 来源 | CSDN(ID:CSDNnews) 大约一年前 ...

  3. python为什么运行不了_为什么python运行效率低?原来因为它!

    1. python是动态语言 动态语言是一类在运行时可以改变其结构的语言,如新的函数.对象.代码可以被引入,已有的函数可以被删除或其他结构上的变化等,该类语言更具有活性,但是不可避免的因为运行时的不确 ...

  4. python上一行的代码打错了怎么办_写Python代码过程中碰到各种错误异常要怎么样去处理?...

    错误异常即便Python程序的语法是正确的,在程序运行的过程中,也可能发生错误.运行期检测到的错误被称为异常. 如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因. ...

  5. python装饰器调用顺序_聊一聊Python装饰器的代码执行顺序

    为什么写这篇文章? 起因是QQ群里边有人提了一个问题:之前导入模块只需要1~2秒,为什么现在变成需要2~3分钟? 我的第一感觉是:是不是导入的模块顶层代码里边,做了什么耗时的事情.隔了一天,他的问题解 ...

  6. anaconda pandas运行不了_学习python你必须弄懂的 Python、Pycharm、Anaconda 三者之间的关系...

    Python作为深度学习和人工智能学习的热门语言,学习一门语言,除了学会其简单的语法之外还需要对其进行运行和实现,才能实现和发挥其功能和作用.下面来介绍运行Python代码常用到的工具总结. 一.Py ...

  7. 永恒python配合什么主武器_让Python代码更易维护的七种武器

    检查你的代码的质量,通过这些外部库使其更易维护. 可读性很重要. 随着软件项目进入"维护模式",对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准).然而,在代码 ...

  8. python代码怎么变成软件_从Python代码到APP,你只需要一个小工具:GitHub已超6000星

    点击上方Python知识圈,选择设为星标 回复1024获取Python资料 选自TowardsDataScience作者:Adrien Treuille机器之心编译参与:魔王.一鸣 阅读文本大概需要 ...

  9. python屏幕录制与回放_使用Python来做一个屏幕录制工具的操作代码

    本文给大家分享使用Python来做一个屏幕录制工具,通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 一.写在前面 作为一名测试,有时候经常会遇到需要录屏记录自己操作,方 ...

最新文章

  1. 附下载|Python带你实践机器学习圣经PRML
  2. 从语义(semantic)GIS和知识表达谈起
  3. ajax java 插件_对JQuery中Ajax应用与jQuery插件的理解与笔记
  4. debuggap 调试html,DebugGap-官方版-DebugGap(移动端调试工具)4.2.2-独木成林
  5. ElementUI的el-cascader级联选择器各个属性的设置
  6. 如何把一个运行完好的Kafka搞崩溃
  7. hibernate oracle驱动,出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误...
  8. 信息学奥赛一本通 1138:将字符串中的小写字母转换成大写字母 | OpenJudge NOI 1.7 13
  9. Apache Ant使用过程的总结
  10. 《深入理解 Spring Cloud 与微服务构建》第三章 Spring Cloud
  11. java simpledateformat 中文_[转载]java中Date,SimpleDateFormat
  12. hdu 6155 - Subsequence Count
  13. centos 安装 LAMP
  14. java宿舍管理系统主要功能_Java学生宿舍管理系统主要内容及特点
  15. 如何批量修改文件名称
  16. CSS修改input标签中placeholder值的文字样式
  17. ui界面设计工具有哪些
  18. CO03生产订单“状态”值对应表和值描述对应表(TJ02T) 和通过BAPI(STATUS_TEXT_EDIT)获取
  19. macbook python文件路径_mac下python目录
  20. 网站注册登录等短信验证码

热门文章

  1. javaone_JavaOne 2012:NetBeans.Next –未来路线图
  2. 将Java 8日期时间API与JSF和Java EE 7结合使用
  3. 如何在生产中检测和诊断慢速代码
  4. Java 8 Friday:更多功能关系转换
  5. 使用Java EE的ManagedExecutorService异步执行事务
  6. MOXy的对象图和动态JAXB
  7. 方法参数名称和Spring
  8. Hadoop + Amazon EC2 –更新的教程
  9. ZK实际应用:样式和布局
  10. Download Apache Commons BeanUtils