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

本贴最后更新于 1603 天前,其中的信息可能已经时移世异

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

image.png

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

Traceback (most recent call last):
  File "d1.py", line 8, in <module>
    import ddt
ModuleNotFoundError: No module named 'ddt'

出现这种问题,你需要去检查一下你实际使用的 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。

新建项目创建虚拟环境

从Python 3.5以后,python 可以非常方便的创建虚拟环境。直接命令行创建:

python3 -m venv venv_name(这个是环境名字)

在当前工作目录中找到 venv_name 文件夹。在 venv_name 文件夹中,您将找到一个Scripts 文件夹,在这里你可以激活你的虚拟环境。
image.png

1, 激活虚拟环境。

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

C:\projects\study_venv>: venv_name\Scripts\activate

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

(venv_name) C:\projects\study_venv>

2, 退出虚拟环境:

(venv_name) C:\projects\study_venv> venv_name\Scripts\deactivate.bat

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

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

虚拟环境当中的 python.exe 和系统的 python.exe 没有什么区别,如果想要通过虚拟环境去运行对应的 python 文件,加上绝对路径就可以直接运行,不需要 activate 激活, 这个在项目部署的时候非常有用,直接添加到 .sh 文件当中:

C:\projects\study_venv\venv_name\Scripts\python.exe demo.py

pycharm 配置虚拟环境

虚拟环境的创建和关联可以通过命令行实现,但是 pycharm 提供了方便的图形化操作的方式,所以你不会命令行也没有关系。创建项目的时候,提示 new environment, 就可以创建虚拟环境,existing interpreter 里是系统里已经创建了的环境,他包含系统环境和其他已创建的虚拟环境。

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

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

image.png

已有项目关联虚拟环境

PyCharm -> Preferences 进入 project setting 设置, 查看所有的环境:

image.png

点击 + 号,就可以进入环境选择; 如果没有出现在列表中,点击 ... 进入路径选择窗口进入对应的目录下选择:
image.png

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

  • Python
    105 引用 • 237 回帖 • 1 关注
1 操作
yuze 在 2020-08-06 17:48:55 更新了该帖
回帖
请输入回帖内容 ...