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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值