相关文章推荐
英勇无比的金鱼  ·  ​python机器学习实战(二)-腾讯云开发 ...·  1 年前    · 
彷徨的绿茶  ·  【FullCalendar】应用——编辑与删 ...·  2 年前    · 
强悍的核桃  ·  Linux 下 ...·  3 年前    · 
玩篮球的苹果  ·  [C#].NET中的三种Timer的区别和用 ...·  3 年前    · 
Code  ›  为什么Python代码能运行但是PyCharm给我画红线?开发者社区
python 编程语言 pycharm python ide
https://cloud.tencent.com/developer/article/1425221
大气的登山鞋
2 年前
作者头像
青南
0 篇文章

为什么Python代码能运行但是PyCharm给我画红线?

前往专栏
腾讯云
备案 控制台
开发者社区
学习
实践
活动
专区
工具
TVP
文章/答案/技术大牛
写文章
社区首页 > 专栏 > 未闻Code > 正文

为什么Python代码能运行但是PyCharm给我画红线?

发布 于 2019-05-14 14:48:46
9.2K 0
举报

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

点击展开阅读全文
文章分享自微信公众号:
未闻Code
未闻Code

扫码关注公众号

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

原始发表:2019-05-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

ide
python
爬虫
登录 后参与评论
关于作者
0
文章
0
累计阅读量
0
获赞
前往专栏
关注 - 腾讯云 开发者 公众号
将获得
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
扫码关注腾讯云开发者
NEW
切换旧版
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档
 
推荐文章
英勇无比的金鱼  ·  ​python机器学习实战(二)-腾讯云开发者社区-腾讯云
1 年前
彷徨的绿茶  ·  【FullCalendar】应用——编辑与删除日程事件(五)_fullcalendar 删除时间-CSDN博客
2 年前
强悍的核桃  ·  Linux 下 Eclipse编译找不到so库文件的解决方法_audio_mqiu的博客-CSDN博客
3 年前
玩篮球的苹果  ·  [C#].NET中的三种Timer的区别和用法_51CTO博客_.net和c#的区别是啥
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号