Anaconda Pycharm 是怎么回事儿?是什么?什么关系?
前言
许多人学习Python的经历可能很相似,写程序没有问题,最后却被各种环境困扰。
不论你是Python小白,还是学习Python有一段时间了。都可以认真的看一下ヾ(≧▽≦*)o
这篇文章让你对Anaconda Pycharm理解更透彻。或许会有新的发现哦!
小故事
王二喜,男,性别不详。程序员一个,头发一打。
"这年头多会一门语言就是多会一门手艺,技多不压身" 王二喜摸了摸自己未来的口袋,有了学习python的心思。
去Python的官网下载,安装。出于程序员天生对于事物的控制感,王二喜打开了Python的安装路径。一个python.exe 以及 pythonw.exe(IDLE 的一个组成部分),更复杂的路径里还有pip.exe。王二喜摸了摸眼镜说:“结构清晰,文件精简”。转身便投入到语法的海洋中去,领会其中的水深火热。一句语法,一份力量。
简简单单,几天过去了...
王二喜很喜欢使用原生的IDLE。 这里可以方便的测试各种Python语法。这期间命令行里输入python pip ,误打误撞的学习过程中也安装了许多的库文件,方便了自己的编程。
天气晴朗,昨夜刚下了一场雨。
王二喜坐在电脑面前看着一篇博文《Python AI 手写数字识别》,什么神经网络,数据集,模型。所有的代码竟然不到100行。王二喜立刻照着代码,自己实现了一下。不错,程序可以运行,可是很多关于 Deep Learning 的概念王二喜并不是很懂。王二喜决定找个教程学一学。
教程A Anaconda。教程B Anaconda。教程C Anaconda。世界就是这么循环往复,学习永不停止。
Anaconda 科学计算,方便包管理。王二喜根据一些教学视频,安装下来。一个良好的环境是心情美丽的开发起点。
Anaconda安装成功后的测试中,王二喜在命令行输入Python,发现出现的并不是老相好原生python。而是新上任的Anaconda里的Python。
同时原生的pip也不可以使用了。王二喜大惊失色:“不会我原来的程序都不能运行了把。”
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https://conda.io/activation
Type "help", "copyright", "credits" or "license" for more information.
>>>123
123
>>>exit()
王二喜感觉身体有点麻,不是全麻的那种,因为他还有部分感觉。
还好这场面这几年来见过不少”大场面“,原生Python IDLE 是可以继续使用的。王二喜立刻调整了心态。身体的麻感也渐渐消失了...接着进行了Anaconda的探索。
电脑里出现了很多最近添加,王二喜点击Jupyter,出现一个网址,点进去发现很不错。那Spyder 又是什么呢。点击了半天,发现并不可以使用 ,打不开的。
王二喜并不清楚来自远古的冰河世纪的麻感,渐渐的,渐渐的,向他围拢了来...
点击Navigator,原来图形界面在这里啊!launch一下jupyter,这东西也不动。
再创建一个新环境,只是走进度条,最后没有结果。
”我这安装了一个什么东西?“王二喜在网上开始了漫漫的求解之路,此去山长水远,少小离家老大回。为什么视图界面不可以运行Jupyter Spyder。这个问题他一辈子都没有解决,不断的试错加深了他的麻感....
王二喜对Anaconda并不感冒,编写程序还是喜欢使用原来的IDLE。就这样又编了一段时间。
直到刚开始要接触一些大的项目用到Pycharm。
初秋的夜,天气已然微凉。王二喜感到嘴唇发麻,因为他喜欢白色的烈酒搭配红色花椒粒。风很冷,这酒却是暖暖的。王二喜打开电脑,开始今天的学习之旅。
正常安装Pycharm后,开始创建项目,什么是 venv? 什么是 interpreter? 为什么要选择interpreter?王二喜一脸疑惑。没有答案,同时不知不觉中腿麻了。
现在,王二喜开始接触到虚拟环境了。知道在虚拟环境中安装或者删除的包,对于真正的Python全局来说并不影响。而且一个新的虚拟环境只有三个包,很干净。
王二喜兴奋的按照教程创建出了自己的虚拟环境。
interpreter是解释器。二喜把自己原生的python.exe 放了上去。
创建成功,但是爆出了一个错误
Invalid Python SDK
cannot set a python SDK at Python 3.10(PythonProject)(F:\Code\PythonProject\venv\Scripts\python.exe)
The SDK seems invalid
二喜心里一惊同时屁股麻了,这是什么东西?顺手点击了OK。这事儿也就过去了。样例程序也可以运行。
迫不及待的试一试,找到了可以查看包的位置,二喜又一次瞪眼了,哪里有之前的说的简单的三个包啊,这**是把咱老Python的包给偷过来了了啊,坑爹啊。(瞪眼)
二喜站在哪里傻傻的说不出话来。整个上半身顿时麻感就涌上来。
王二喜挺住啊!
有没有可能已经是虚拟环境了,与外界隔离了,只不过初始的包库是在原来的基础之上。二喜对它还是有期待的。
二喜在包列表里找了个不那么重要的包,像抓一只即将离开人世的小乳猪,他叫h5py。
打开原来的IDLE,import h5py print(h5py)。h5py高兴的不得了,他输出了自己的信息。转瞬二喜又到了pycharm里卸载了h5py....
这毕竟也是第一次在pycharm里卸载包,二喜还有点小兴奋。
二喜很喜欢这个虚拟环境的功能,对于这种隔离,二喜vmware里已经尝到不少甜头。
打开原来的IDLE
import h5py
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import h5py
ModuleNotFoundError: No module named 'h5py'
多天的深夜程序编写,一直报错的项目环境,小猪猪的离奇死亡....
这一切的一切...
二喜胸口发闷。突然!!!世界一片漆黑,二喜再也没有忍住,麻倒在地不省人世。嘴里念叨着我的h5py小猪猪啊,呜呜呜。
谁也不知道二喜与h5py的深厚感情....
看到这里很多同志都想起了当年了吧(~ ̄▽ ̄)~
一些拙见
我们想要一个Python环境。只需要安装Anaconda + Pycharm即可
原生的Python环境和Anaconda环境会有冲突。
原生Python的 python
pip
是放到用户环境变量。
但是Anaconda也有这些命令。
Anaconda的 python
conda
pip
安装时是直接放到系统环境变量。
这里说一下环境变量。在命令行里我们要运行一个可执行xxx.exe程序,最常用的做法就是切换到这个程序所在的文件目录,键入 xxx就执行了。这样很麻烦,若我们将这个程序所在的文件目录直接放到环境变量里,不论在那个文件目录下,我们都可以键入xxx即可运行。
在Anaconda 和 原生Python之间现在出现了命令冲突。你运行python
pip
,操作系统怎么分辨这是哪位大爷的程序?
答案是系统环境变量优于用户环境变量。
二喜运行python
pip
的这些命令都是Anaconda里的。
原生Python这下就遭殃了。python
pip
这些重要的命令用不出来,它就很麻烦。而且匹配pycharm的时候,用原生python创建虚拟环境就会出现创不出来的情况。虚拟环境只能匹配原生的一切配置用到所谓的虚拟环境了。这已经不是虚拟了。
这时你试一试用Anaconda的解释器去配虚拟环境。同样是解释器,Anaconda却能正常的创建虚拟环境。
因此原生Python就失去了用物之地。很多人就蒙了,认为没有原生python就没有IDLE执行程序。
我们先说说原生python的特点,体积小巧,可以执行python程序(python.exe)的功能,一个pip。最重要的是有一个自带的IDLE。绝大多数人最初编写的程序都通过它运行。大家可以在这里确认一些语法和算法问题,很方便。
可我们看看Anaconda。
安装上不生不响,虽然有一个jupyter可以使用类似IDLE的功能,但真的不太顺手。Anaconda给人的第一印象就是,庞大的自带科学计算库,AI必用。
可是它还有一个重要的功能,分割各种Python环境,类似于我们的虚拟环境。在一个Anaconda里你可以创建无数的环境。这环境由一个类似完整独立的python组成,这里的独立还包括对应的库环境,如果你去看它的目录结构,同一个原生的python几乎一摸一样,例如我创建了一个python3.7的环境,这里可以使用python3.7,我又在这里pip一个Requests包。过几天我又创建了一个python3.9的环境,我在这里pip一个Tensorflow包,这两者是不相关的。这个功能与Pycharm配合会更好。
这些个环境可以通过Navigator来实现,存放在Anacnda安装目录里的evns目录里。
很多人还是一头雾水,这有什么用?还不如我一个python IDLE好用。我必须保留原生的python。这是很多人对于原生Python的一个执念。
这里又要说一个事儿。
Anaconda真是一个闷葫芦。它自带了python IDLE。 在安装后却没有像jupyter那样明显的显示。太败家了。
原生python IDLE
IDLE (python 3.7.4 64-bit)
目标
C:\Users\hp四核\AppData\Local\Programs\Python\Python37\pythonw.exe "C:\Users\hp四核\AppData\Local\Programs\Python\Python37\Lib\idlelib\idle.pyw"
而Anaconda的在哪里?和着这个一摸一样啊!
右键桌面空白,新建,快捷方式。目标,还可以自己起一个名。
"F:\ProgramData\Anaconda3\pythonw.exe""F:\ProgramData\Anaconda3\Lib\idlelib\idle.pyw"
说到这里,原生Python有的没的Anaconda都是有的。为什么还揪着原来的python不放?
卸载原生Python注意如果以前改过解释器名称的,改回来才可以正常卸载。
所以一个完整的python环境
只需要安装Anaconda + Pycharm即可。
1 Anaconda使用
由于 很多人在 Anaconda Navigator 界面遇到很多问题。建议直接放弃视图界面。
这里介绍命令方法使用Anaconda。
1.1 查看conda版本
conda -V
4.10.1
1.2 查看各种虚拟环境
conda info -e
# conda environments:
#
base * F:\ProgramData\Anaconda3
1.3 创建一个虚拟的 python3.7环境 名字叫enviroment_name
conda create -n enviroment_name python=3.7
文件在Anaconda3\envs
虚拟环境 python3.7 与 原生python3.7 完全一致
你甚至可以利用快捷方式创建一个虚拟环境 python3.7的IDLE。与上面的方法一致。
1.4 虚拟环境的进入与退出
# To activate this environment, use
#
# $ conda activate py37
#
# To deactivate an active environment, use
#
# $ conda deactivate
这两条命令可以随时进入(退出)这个虚拟的环境,一旦进入,任何操作都与整体Python环境无关。包括下载包。
可以看到这个环境里只有四个包。很简单。
(py37) C:\Users\hp四核>pip list
Package Version
------------ -------------------
certifi 2021.5.30
pip 21.0.1
setuptools 52.0.0.post20210125
wheel 0.37.0
wincertstore 0.2
1.5 虚拟环境的删除
conda remove -n py37 --all
删除所有的环境相关文件。
1.6 Pycharm利用Anaconda的虚拟环境
Pycharm是自带虚拟环境功能的。即Virtualenv。不过他需要一个base interpreter,来构建整个虚拟项目。整个项目的Python版本依赖于base interpreter的python版本。不过在Virtualenv里的一切操作不会影响到你base interpreter的环境。从base interpreter这里就看到一个问题,我只有一个python3.9的解释器,也就是自己安装的。但是我们的项目需要python3.7这时候就束手无策了。
Anaconda的虚拟环境是 我每一个虚拟环境都是一个完整的python版本(有解释器,有对应的库包资源)。各个虚拟环境之间相互独立。可以在你电脑里安装100个独立的Python版本,对应100个解释器。eg:pyhton3.7 3.8 3.9。
两个配合将是绝杀。
这里讲如何在pychrm利用Anaconda的虚拟环境。注意使用anconda的虚拟环境环境的解释器。
Interpreter是Python的解释器,运行Python需要解释器的帮助。
例如在CMD里键入Python就是调用这个解释器。解释器会依赖其中的Python版本信息,来解释你的代码。
任何高级语言都需要解释器,也都有解释器。
interpreter 英 [ɪnˈtɜːprətə(r)] 美 [ɪnˈtɜːrprətər] n. 口译译员;口译工作者;演绎(音乐、戏剧中人物等)的人;解释程序
1.6.1 选择 Previously configured interpreter
如果点击使用Anaconda新建环境,你可以选择Python的版本,然后Pycharm会从网络上拉取对应的python版本。不过版本拉取可能会受到网络影响。
这里我们用已有的就行了,省一些步骤。我们现在有一个原生的 Anaconda的解释器,还有一个Anaconda生成的虚拟环境py3.7版本的解释器。
1.6.2 添加Anaconda的虚拟环境解释器
这里等一会儿就行了,他会自动寻找。其实就是虚拟环境里的Python解释器。
1.6.3 Create
这就成功创建了一个基于Anaconda的虚拟环境解释器的Python项目。
我们打开设置
看一下环境的包
哪怕有了Pycharm Anaconda的包最好还是在你的命令行里直接安装比较好。比较方便的使用方式使使用pycharm的terminal,并且在其中激活我们的虚拟环境。
2 Pycharm使用
2.0 编译
C语言要想运行就必须要有gcc编译器,C++运行就必须要有g++编译器。任何语言的运行都需要编译器的帮助,将高级代码转换成计算机可以看懂的机器代码。可是这些语言在创建运行时,我们离他们的编译器很远。他们藏在一些大型编译环境的深处。
高级语言代码的转换有两种形式。
-
编译程序,在没有将整个程序全部翻译完之前,程序不可以运行。编译和运行是两个分开的阶段。c++ c
-
解释程序,一旦一个语句分析结束,程序就立刻运行并产生结果。lisp python php
程序的解释是非常慢的,有时一个高级语言的源程序的解释会比运行等价的机器代码慢100倍!另外,解释程序的空间开销也比较大。
有些语言 java,既有解释器,也有编译器。以便用于不同的场景。
python由于语言特性版本多样。他需要在创建一个项目的同时,指定一个Python的解释器。
你在命令行运行Python程序的时候 python test.py
,其实也是指定了一个解释器。希望大家能够理解这层关系。
pycharm的一大优势就是虚拟环境。根据一个Python的解释器,在项目目录里生成一个虚拟的环境,这个虚拟环境中初始只有几个库包,任何对于库包的添加和修改,都不会影响到真实的解释器中的库包,但其实真实和虚拟环境用的是一个解释器。
Interpreter 就是 python.exe
。
2.1 虚拟环境创建 Virtualenv
选择 New environment using Virtualenv 外加一个解释器Interpreter就可以了,下面图片用的是Annaconda自带解释器。
解释器使用anaconda的虚拟环境中的 python.exe
也是可行的。
虚拟环境是很干净的,只有三个包。完美的使用了anaconda提供的python3.9。
注意,在Terminal里对这个环境的使用需要激活。
cd .\venv\Scripts\
activate
2.2 项目的共享
你编写了一个程序,下载了许多包。程序只有1 m,而项目的包却有100 G。突然你想把这个项目上传到网上。
这个100 G的东西压缩都需要不少时间。有什么更好的办法呢。
2.2.1 制作依赖文件
在项目的Terminal进行环境的激活,激活后。
pip freeze > requirements.txt # 将项目的虚拟环境包的依赖放入requirements.txt
这样你只需要将这两个文件发送给他人即可
code.py
requirements.txt
2.2.2 使用有依赖文件的项目
创建一个新项目,使用一个新的虚拟环境。放入code.py
requirements.txt
在项目的Terminal运行
pip install -r requirements.txt
就会下载里面的包。制作一个一摸一样的环境。
pip利用国内阿里云源 更加快速的下载包
pip install -i http://mirrors.aliyun.com/pypi/simple/ pandas
文章可能发生改动。一些网站会爬取本文章可能会有出入。
https://www.cnblogs.com/asmurmur/
如果我的工作对您有帮助,您想回馈一些东西,你可以考虑通过分享这篇文章来支持我。我非常感谢您的支持,真的。谢谢!
作者:Dba_sys (Jarmony)
转载以及引用请注明原文链接:https://www.cnblogs.com/asmurmur/p/15195034.html
本博客所有文章除特别声明外,均采用CC 署名-非商业使用-相同方式共享 许可协议。