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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 在线帮助,linux获取在线帮助

Linux系统的帮助文档非常丰富。帮助手册提供命令的使用说明。比如你若是想了解ls命令的用法,只需运行:$ man ls帮助手册旨在提供基础知识和参考信息,有时会有一些实例和交叉索引,但是基本没有那种教程式的文档。帮助手册会按系统排…

python的计算_python 计算方位角实例(根据两点的坐标计算)

知道两点坐标,怎么计算两点方向的方位角? 答:首先计算坐标增量dx,dy(两个对应坐标分量相减,终点的减始点的)。 若dx,dy中有一个为零时,根据另一个的正负决定方位角(0,90,…

linux中samba详解,详解linux系列之samba的安装及配置

上篇博文中我介绍了FTP,今天我们来介绍一下samba实现文件共享。这个比FTP更好点,因为对用户的权限可以通过samba权限和系统权限交叉使用,取最严格的。可以让windows更容易的从linux系统上存取文件,还有samba也可以让linux上面的打…

saml2_向SAML响应中添加自定义声明–(如何为WSO2 Identity Server编写自定义声明处理程序)...

saml2总览 最新版本的WSO2 Identity Server(版本5.0.0)配备了“应用程序身份验证框架”,该框架提供了很大的灵活性,可以对使用异构协议的各种服务提供商的用户进行身份验证。 它具有几个扩展点,可用于满足企业系统中常…

python做股票分析_利用Python进行股票投资组合分析(调试)

pythonsp500-robo-advisor-edition Python for Financial Analyses 需要的镜像文件和数据--Robo Advisor edition. 小结 "Python for Finance: Robo Advisor Edition" 这一版本的镜像包括Jupyter notebook和Python脚本,以及用pandas通过Jupyter notebook构…

c语言程序求一一组数平均值,编写求一组整数的和与平均值的程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼-----------------------------------------------------[习题6-1]编写求一组整数的和与平均值的程序。-----------------------------------------------------[分析]循序渐进,从易到难,分解为下列问题群。…

使用Apache Kafka,Kubernetes和Envoy,Istio,Linkerd的服务网格和云原生微服务

微服务架构不是免费的午餐 ! 微服务需要解耦,灵活,操作透明,数据感知和弹性。 过去几年的大多数材料仅讨论具有紧密耦合且不可扩展的技术(如REST / HTTP)的点对点体系结构。 这篇博客文章介绍了Apache Kafk…

python缩写词_如果连这10个Python缩写都不知道,那你一定是Python新手!

在本文中,我将告诉大家一些容易忽视的Python编程原理、规则和一些有趣的事实。 简介 对于许多开始学习编程的人来说,Python已经成为他们的首选。Python有非常直观的语法和支持动态类型的灵活性。此外,它是一种解释语言,这使得使用…

单片机控制三相异步电动机正反转c语言程序,请用PLC控制一台普通三相异步电动机的正反转控制,设计其控制程序梯形图及主电路...

PLC的编程方法及步骤。总的步骤主要有三步:一、根据电路图选择电器元件及PLC的型号,其中包括确定PLC的输入输出点位、确定PLC的输出类型,也需考虑某些功能是否能扩展、价格等;二、设计好PLC控制的外围元器件的原理图。这里面包括有…

0x80070003系统找不到指定路径_Win7系统中gpedit.msc找不到应该如何解决?

Win7x系统gpedit.msc找不到怎么办?最近有用户反映,电脑当中的gpedit.msc找不到了,gpedit.msc就是我们的策略组,对于我们的电脑来说是非常重要的,那么gpedit.msc找不到应该如何解决呢?接下来就为大家分享win…

c语言回文数递归,c语言问题~~~回文数!!急,拜托高人指点!!

满意答案wyhjjq12014.01.27采纳率:53% 等级:12已帮助:10413人添加上满足你补充要求的C程序:#includeint palindrome(unsigned int x){unsigned int y;unsigned int s0;yx;while(y>0){ss*10y%10;yy/10;}if(sx)return 1;elsereturn 0;}vo…

jboss架构_检查Red Hat JBoss BRMS部署架构的规则和事件(第一部分)

jboss架构(文章来宾与北美红帽公司高级中间件顾问约翰赫洛克 ( John Hurlocker)合着) 在这周的技巧中,我们将放慢速度,并仔细研究可能的Red Hat JBoss BRMS部署体系结构。 在谈论部署体系结构时&#xf…

snvr client怎么使用_TCGA官方工具gdc-client.exe的安装及使用

在TCGA数据下载过程中,会提示使用Download a manifest for use with theGDC Data Transfer Tool​gdc.cancer.gov实现过程:1.下载gdc-client的压缩文件;gdc-client_v1.4.0_Windows_x64.zip2.将上述压缩文件copy到一个英文文件名称的文件夹内&…

c语言 源文件未编译,源文件未编译什么意思

语音内容:大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。源文件未编译,即在运行前要对源代码进行编译链接,然后才能运行。编译利用编译程序从源语言编写的源程序产生目标程序的过程,…

JDK 14中的常规,安全和确定性外部内存访问

在“ JDK 14 Rampdown:Build 27 ”一文中,我总结了JDK 14 Early Access Build #27中新增的许多针对JDK 14的功能。 已经存在另一种JDK 14 Early Access Build,并且此[ Build 28(2019/12/18) ]包括一个特别有…

android 获取当前网络,Android 获取当前网络连接的类型信息

获取当前网络连接的类型信息public static int getConnectedType(Context context) {if (context ! null) {ConnectivityManager mConnectivityManager (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo mConnectivi…

js时间选择器_Vuestic Admin一款免费与美妙基于Vue.js开发的管理模板

Vuestic Admin 简介vuestic admin是一款流行,免费与美妙的基于Vue.js开发出来的管理模板,包括38以上个定制用户界面组件,由Epicmax开发,由Vasili Savitski设计。目前github star 6K, 最新版本2.0.0, MIT许可协议。为什么选择Vuestic AdminVue…

linux内核之旅ppt_微软Windows 10防病毒现已可用Linux上

微软在推出预览版应用程序几个月后,刚刚宣布了适用于Linux的Microsoft Defender ATP的全面可用性。“ Microsoft Defender ATP将Linux添加到现有的本机支持平台的选择中,对我们所有客户而言都是重要的时刻。它使Microsoft Defender安全中心成为真正的统一…

android 地图放大缩小按钮,Android 百度最新地图隐藏 放大缩小按钮、指南针、缩放比例的方法...

相信很多人在做地图是都会遇到如要隐藏这3中按钮的困扰,那么该如何实现呢?我就不多说,代码很少,一看就能明白下面接是具体实现代码// 隐藏缩放控件int childCount mMapView.getChildCount();View zoom null;for (int i 0; i &l…

Spring再次涵盖了您:继续进行消费者驱动的消息传递合同测试

在上一篇文章中,我们已经开始讨论基于消息的通信中的消费者驱动的合同测试 。 在今天的帖子中,我们将在测试工具箱中包含另一个工具,但是在此之前,让我对显微镜下的系统进行快速回顾。 它有两项服务, 订单服务和货运服…