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画红色波浪线的情况。

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

  1. pycharm 怎么快速生成文件夹结构_Pycharm配置Qt工具(ubuntu18.04)

    该文章主要记录如何在Pycharm中配置QtDesigner.Pyuic,使得能够很方便地在Pycharm中打开特定的ui文件进行修改并一键生成对应实际使用的py界面文件. 首先是一些基本的概念,QD ...

  2. 为什么python代码运行不了_为什么Python代码能运行但是PyCharm给我画红线?

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

  3. sudo修改文件夹名字_用 Python 高效智能管理文件夹

    #「闪光时刻」主题征文 二期# 大家在写报告.写总结时,是否会先去翻一下以前写过的类似的东西?是否有看过比较好的文章,想保存时却为归类而纠结?是否电脑里的文件越来越多,想删掉一些却又舍不得?身处大数据 ...

  4. 的文件夹结构_小白指南:WordPress文件及目录结构解析

    想学习关于WordPress文件和目录结构的知识吗?WordPress核心软件.主题.插件以及用户上传的文件都存储在网站上.在这篇小白指南中,我们将解析WordPress文件和目录结构. 为什么需要学 ...

  5. win10自动生成文件夹结构readme的方法

    在整理纳品数据时,需要编写readme文件以表明文件的目录结构. 在win10系统中(win7系统需自行安装PowerShell软件),可使用以下步骤生成readme文件: 1.按住Shift键,选中 ...

  6. 的文件夹结构_用framework7开发APP:6.目录结构

    描述 无论使用什么框架开发项目,我们最好都是先熟悉以下该框架的各种文件结构和含义,这样不仅能使我们的开发效率事半功倍,也能让我们的项目可读性更高,framework7亦如是. 开始 framework ...

  7. python如何爬取图片到指定文件夹论文_基于Python的图片爬虫程序设计

    互联网中包含大量有价值的 数据,网络爬虫通过既定规则可 以自动地抓取互联网数据并下载 至本地存储.研究网络爬虫的工 作原理和基于 Python 网络信息爬 取技术模块功能,基于 Requests- B ...

  8. python读取文件特定内容_利用python代码获取文件特定的内容,并保存为文档

    import os.path import re # 1 遍历指定目录,显示目录下的所有文件名 def each_file(file_path): path_dir = os.listdir(file ...

  9. 使用 Python 生成文件夹目录结构

    新建一个 python 文件,复制以下代码,运行时指定一下 ignore_list 和 direction_path 即可快速生成文件夹目录结构图. import re from pathlib im ...

最新文章

  1. 扩展GridView控件(7) - 行的指定复选框选中时改变行的样式
  2. 互联网思维-产品思维(1)
  3. Linux学习日记:第二天
  4. c语言学生信息管理系统框架,vue实现学生信息管理系统
  5. HDU 5025Saving Tang Monk BFS + 二进制枚举状态
  6. 台式计算机装系统,教你台式电脑重装系统方法
  7. 小白科普:分布式和集群
  8. Python重写C语言程序100例--Part6
  9. VB谨慎使用IsMissing函数
  10. TDX抢反弹指标(不含未來函数)
  11. 2018ACM-ICPC徐州赛区网络赛: D. Easy Math(Min_25筛)
  12. 使用finalize/dispose 模式提高GC性能(翻译)
  13. HTML 小练习(休假申请单)
  14. 2022-2028年中国商业智能化行业发展现状调查及前景战略分析报告
  15. Twitter无法输入密码
  16. 解决STM8S103K3T6打开BEEP功能遇到的无法操作BEEP_CSR的问题
  17. 吉林大学计算机李昕,本报新聘百名特约教工通讯员
  18. 多传感器融合感知 --传感器外参标定及在线标定学习
  19. paper—基于 GCN 的安卓恶意软件检测模型
  20. 阿里巴巴:互联网架构将成企业IT发展刚需

热门文章

  1. C语言课后习题(3)
  2. word一键排版工具_超赞的Word标尺小工具,轻松帮你搞定各种「对不齐」排版问题...
  3. java的tcp通信项目_java实现TCP通信
  4. 从分库分表到Database Plus,重新认知ShardingSphere
  5. 详述一次大量删除导致MySQL慢查的分析
  6. 守得云开见月明:一次ASM存储高可用故障解决过程分析
  7. 集成学习中的随机森林
  8. 后疫情时代,华为云会议如何定义未来会议?
  9. 寒冬袭来,带你使用Flask开发一款天气查询软件吧
  10. 老兵的十年职场之路(一)