Python代码又报错了?看下这个方法
创始人
2025-03-18 08:21:42
0

 [[277210]]

刚学习python的同学经常会遇到一个问题: 已经安装了特定的包或者第三库,但是pycharm总是提示没有找到。

Python代码又报错了?看下这个方法

比如我已经有ddt了,可运行脚本的时候却告诉我没有这个模块:

Python代码又报错了?看下这个方法

出现这种问题,你需要去检查一下你实际使用的python环境和你正在配置的环境是否是同一个,因为python里经常会遇到叫虚拟环境的玩意,可能你在不经意的瞬间已经创建了一个虚拟环境。

一、虚拟环境的好处

虚拟环境是一个将不同项目所需求的依赖分别放在独立的地方的一个工具。

你可以大致理解成他是我们安装的python.exe 的一份拷贝,这份拷贝独立维护了每一个项目所需要的工具和库。

比如我们有2个项目yuz1和yuz2。

yuz1需要安装ddt的1.2.1版本。

yuz2是一个很老的项目,他需要ddt的1.1.2版本,不能升级到1.2.1。

所以在python当中,我们需要维护2套依赖库的环境,当我要运行yuz1, 就用环境1, 当我要运行yuz2,就是用环境2。

二、新建项目创建虚拟环境

从Python3.5以后,python可以非常方便的创建虚拟环境。

直接命令行创建:

Python代码又报错了?看下这个方法

在当前工作目录中找到venv_name文件夹。

在venv_name文件夹中,您将找到一个Scripts 文件夹,在这里你可以激活你的虚拟环境。

Python代码又报错了?看下这个方法

1、激活虚拟环境

在当前目录下,使用cmd运行activate:

Python代码又报错了?看下这个方法

激活后会看看到路径前面多了一个括号:

Python代码又报错了?看下这个方法

2、退出虚拟环境:

Python代码又报错了?看下这个方法

退出环境以后,括号会消失,我们又回到了系统的python环境当中。

3、虚拟环境当中的python.exe

虚拟环境当中的python.exe和系统的python.exe没有什么区别,如果想要通过虚拟环境去运行对应的python文件,加上绝对路径就可以直接运行,不需要 activate激活。

这个在项目部署的时候非常有用,直接添加到.sh文件当中:

Python代码又报错了?看下这个方法

三、Pycharm配置虚拟环境

虚拟环境的创建和关联可以通过命令行实现,但是pycharm提供了方便的图形化操作的方式,所以你不会命令行也没有关系。

创建项目的时候,提示new environment, 就可以创建虚拟环境。

existing interpreter里是系统里已经创建了的环境,他包含系统环境和其他已创建的虚拟环境。

如果想单独建立,就选择new environment; 如果想使用原来已经创建好的,就点击选择就可以了。

比如我们可以通过 ... 符号选择上面建立好的venv_name这个虚拟环境和项目关联。

Python代码又报错了?看下这个方法

四、已有项目关联虚拟环境

在 PyCharm -> Preferences 进入 project setting 设置

查看所有的环境:

Python代码又报错了?看下这个方法

点击+号,就可以进入环境选择;

如果没有出现在列表中,点击 ... 进入路径选择窗口进入对应的目录下选择:

Python代码又报错了?看下这个方法

虚拟环境在 python 学习过程中不是必须的,但是如果你的项目很多,你一定会发现你的安装包文件夹已经乱成一锅粥了。

赶紧用虚拟环境去整理一下吧。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...