python之环境切换问题实践总结
前言
这个标题是实践总结,为什么呢,因为这个问题困扰了我整整一个月,都没有解决。现在终于解决了,写一篇文章记录一下,也看看有没有小伙伴遇到一样的问题,或者在我下次还会发生这样的实情事可以第一时间解决,幸好不着急,不然就g了。
问题描述
就是我在暑假用python做了一个网页,这也是我学python以来第一个 大项目,做完之后,电脑太卡了,太乱了。然后就把电脑恢复出厂了,想着项目我已经做好了电脑再怎么折腾都会运行的,可是,等我把软件,环境全部装好之后,就发现好多报错。也不是报错,好多提示,一会是这个库没有安装,一会是python没有解释器。
库没安装,好办,我去安装,这一次我聪明了,做我恢复之前我搜过一个技能,怎么把项目中用到的库导出来,
pip freeze > requirements.txt
这个命令,可以把当前环境或者项目用到的第三方库全部导出来放到一个requirements.txt
文件里面,方便下次一次性安装。
那我接下来安装
pip install -r requirements.txt
我安装完了。没有解释器,那我自己配置一下,但是还是提示我没有安装模块,但我我真的是确确实实安装了。
解决方案
最后我解决了,怎么解决的,归根结底还是我环境弄得不对,因为我学习的大数据,老师让我们使用anaconda。因为这个软件我用了半年了,大致有个了解,就是个python的发行版本。这一次直接给电脑安装了anaconda,没有安装python。
先说一下我的问题,我确确实实安装了第三方库,但是我错了,我把环境弄错了,我做的项目和我安装第三方库的不是一个环境。怎么理解呢,我住在这个房间,但是我把东西放在了那个房间。这么一来,我为什么找不到我的东西,因为我放错地方了。而且我百度,还创建好多没用的环境
然后我又安装python、卸载python,安装anaconda,卸载anaconda。来回横跳,就是不行
然后最近又在捣鼓一个东西,这里我大致了解了一些python环境相关的知识。今天,2022,10,31日解决了。今天是万圣节。
我记录一下解决过程
anaconda
介绍
一开接触这个,弄得我一头雾水,现在学习了快一年了,基本明白了。
先看一下百度百科对anaconda的解释
Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等
Miniconda包括Conda、Python
conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换
我用了这么久我来说一下这是什么意思
这是python的升级版,pro版
一大堆的安装好的工具包,就是说在没有使用anaconda的时候,我们使用一个第三方库,都有先pip install
一下。是不是觉得很麻烦,我就想过这个问题,有没有什么方法可以不用安装这些库,自动就安装好,我一用pip
就会报错。而anaconda对于像数据分析用的numpy、pandas等等这些工具包,不需要我们额外安装。已经带好了
conda是什么事,就是用来管理包的工具,其实和pip一样。我看好多文档,这是conda下载的比较全面,这个我具体不知道。
python,如果你觉得是python的解释器,那就对了一半,还有一半,现在python3.11都出来了,在我们之前安装的时候,就只能安装python的一种版本,但是anaconda不一样,你可以用python的各种版本,3.x、2.x来回切换。
这里就提到了一个虚拟环境,一开始我也是不明白,是这样的
我们现在用多个项目,那我就可以为每一个项目创建一个工作环境,对,虚拟环境也可以理解为工作环境。让这个项目只在属于自己的环境下开发,这时我们就可以每一个工作环境创建不同的python版本。各自版本的第三方库互不干扰。
anaconda,现在我用习惯了,都觉得很方便
因为提供了虚拟环境,所以也不用安装python了,这个里面就已经有了,但是要学会配置。
-
更新anaconda
conda update anaconda
环境管理
查看anaconda版本
conda -V
注意这个V
要大写。这一步也是检测anaconda有没有安装成功的重要方法
查看所有虚拟环境
conda env list
或
conda info -e
或
conda info --envs
查看当前有哪些 虚拟环境,这里我要演示一下
(base) PS C:\Users\huan> conda env list
# conda environments:
#
base * D:\anaconda3
base
是环境名称,D:\anaconda3
是环境的安装位置
如果是新安装的anaconda,那么默认有一个base环境,
怎么看当前的环境,有两种方法,第一种,在我们列出所有环境扽时候,会有一个星号*
这就是当前环境。
第二种,我们看这里(base) PS C:\Users\huan>
,其中(base)
就是我们选择的环境
创建环境
conda create -n <env_name> <python=version>
-
<env_name>:环境名称
-
<version:python>:的版本
-
举例
conda create -n test python=3.11
创建一个虚拟环境,名字是test,用的是最新的python。3.11会有一个提示,输入y即可。
Proceed ([y]/n)?y
激活当前环境
conda activate <env_name>
刚才创建了个test环境,那我就选择这个环境。 conda activate test
怎么检查python的安转版本是否正确。
(test) PS C:\Users\huan> python
Python 3.11.0 | packaged by conda-forge | (main, Oct 25 2022, 06:12:32) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
也可以通过这里查看环境有没有切换成功:(test) PS C:\Users\huan>
(test)
在命令行输入python。Python 3.11.0
就是python的版本。
输入python后,会进入python的环境,但是现在用不到python。所以exit()
退出
(test) PS C:\Users\huan> python --version
Python 3.11.0
刚刚搜索,这样也可以查看python版本
python --version
退出环境
conda deactivate
复制环境
conda create --clone <old_env_name> -n <new_env_name>
-
<old_env_name>:被复制的环境名
-
<new_env_name>:新环境的名
-
举例
conda create --clone test -n test_new
复制test环境并且重新命名为test_new
删除环境
conda remove --name <env_name> --all
在删除环境时,一定要先退出要删除的环境,conda deactivate
注意,在删除环境时,会有一个防误删操作,有一个提示
Proceed ([y]/n)? y
如果要删除,输入y。
环境删除后,但没有完全删除,要把安装环境的那个文件夹手动删除,否则会影响下一次安装一个相同名称的环境
分享环境
-
打包
conda env export > environment.yml
-
下载
conda env create -f environment.yml
这个就可以进行跨设备分享环境,我看文章说是有一些大佬会在GitHub上分享环境,那么我们如果看见.yml
后缀的文件,那么一定是anaconda的环境分享,我们就可以安装
但是这个格式好像并不是conda环境的专属格式
conda包管理
更新conda
conda update conda
查看当前环境已经安装的包
conda list
安装包
-
为指定环境安装包
conda install --name <env_name> <package_name>
conda install --name test pandas
,为test环境安装pandas包,但我现在并不需要在test环境,有可能我在base环境 -
为当前环境安装包
conda install <package_name=version>
conda install pandas
,我要给那个环境安装pandas包,那我必须要在那个环境里面
可以安装包的指定版本
卸载包
-
卸载指定环境的包
conda remove --name <env_name> <package_name>
conda remove --name test pandas
,卸载test环境下的pandas包, -
卸载当前环境的包
conda remove <package_name>
conda remove pandas
卸载pandas包
更新包
-
更新单独包
conda update <package_name>
-
更新全部包
conda update --all
搜索包
-
精确查找
conda search --full-name <package_full_name>
-
模糊查找
conda search package_name
conda换源
查看镜像源
查看当前设置了哪些镜像源
conda config --show channels
Windows
-
命令行方式
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/ conda config --set show_channel_urls yes
-
修改配置文件
这是一个官方教程:anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
先是执行这段命令
conda config --set show_channel_urls yes
,会在用户目录下生成一个.condarc
的配置文件。channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - defaults show_channel_urls: true
吧这段内容复制到那个文件。
然后就可以了。
Linux
-
命令
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/ conda config --set show_channel_urls yes
-
修改配置文件
配置文件是
~/.condarc
,要用vim打开,即vim ~/.condarc
复制下面的文件
show_channel_urls: true channels: - https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/ - https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/ - https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/ - https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ - defaults
这个命令和Windows的命令是一样的,但是配置文件就不一样了。
镜像源恢复
conda config --remove-key channels
pip的一些使用
虽然我已经好久不用pip了,但是这个作为一开始接触python的来说,这是一个重点,而且在我的印象里,pip的更新速度非常快,在我一开始学习pip的时候,每次安装第三方库时,总是说提示需要升级pip,每一次我都是问人,一点不会。
现在熟悉了,也记录一下
pip相关命令
-
查看pip版本
pip --version
-
更新pip
pip install --upgrade pip
或
python -m pip install --upgrade pip
-
查看帮助
pip -h
或
pip -help
安装包
-
直接安装包
pip install <package_name[==version]>
pip install numpy
安装numpy库也可以安装指定的版本,例如:
pip install numpy=1.8.2
, 如果没有指定的版本,会报错。 -
安装whl格式的包
pip install <XXX.wh>
pip install pandas-1.5.2-cp39-cp39-win_amd64.whl
安装pandas库,但是注意安装的pandas库是一个pandas-1.5.2-cp39-cp39-win_amd64.whl
文件,后缀名为.whl
因为有些时候并不能很顺利的直接安装包,可能这个包已经停用了,也可能因为网络问题,所以我们就需要手动下载包,然后安装
.whl
文件,python wheel文件,本身是就是一个压缩包。可以理解为是特殊的压缩包,只有pip可以识别,我也了解不多提供一个下载python wheel文件的链接,Archived: Python Extension Packages for Windows - Christoph Gohlke (uci.edu)
查看包
-
查看已经安装包
pip list
-
查看包信息
pip show <package_name>
例如:
pip show pandas
会显示包的名称、版本、简介等等 -
查看包详细信息
pip show -f <package_name>
两种查看包的方式,但是-f的比较全面
搜索包
pip的搜索包好像被禁用了,如果使用的话需要下载。
pip install pip_search
然后可以搜索包
pip_search <package_name>
例如 pip_search pandas
,搜索pandas包
更新包
-
查看可更新的包
pip list -o
-
更新包
pip install --upgrade <package_name>
pip install --upgrade zipp
更新zipp包
卸载包
pip uninstall <package_name>
pip uninstall numpy
卸载numpy
下载包
pip download <package_name>
pip download numpy
,下载numpy包,但是并不安装,下载的是wheel文件,
导出与导入
-
导出
pip freeze > requirements.txt
-
导入
pip install -r requirements.txt
这个很常见,导出当前环境的所有包,是一个txt文件,然后可以在重新安装。我在上面也说到了我用的这个方法。
但是我现在更推荐直接分享环境。
pip换源
因为安装的库基本上都来自国外,因此我们下载就会非常慢。单号的是有国内的镜像源,
conda也是这个道理,但是我还没有找到解决方法。
阿里云源: http://mirrors.aliyun.com/pypi/simple/
中国科技大学源: https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) 源:http://pypi.douban.com/simple/
清华大学源: https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学源: http://pypi.mirrors.ustc.edu.cn/simple/
以上是一些镜像
-
临时换源
pip install <> -i <url>
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
用清华大学的源下载numpy -
永久换源
pip config set global.index-url <url>
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
更换清华大学的原但是这种换源方式会有提示,不过已经换源了。
Writing to C:\Users\huan\AppData\Roaming\pip\pip.ini
这是那个提示信息,应该是让你写进
pip.ini
这个文件。打开这个文件[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
就是这么一段内容,应该是在
index-url =
输入镜像源
到这里,pip的一些常用命令我就写完了。如果是初学者建议还是用pip安装,pip好像不能管理环境。
问题解决
前面说是我环境的问题
我是用anaconda+pycharm写的程序,所以现在的问题是怎么在pycharm里面切换环境。
首先,我们应该要知道我们安装环境,那么环境安装到了哪里
(base) PS E:\huan\桌面> conda env list
# conda environments:
#
base * D:\anaconda3
new D:\anaconda3\envs\new
test D:\anaconda3\envs\test
conda env list
这个命令我们现在已经很熟悉了,那就是查看当前的环境。
其实已经很直白了,左边显示的环境名称,右边显示的是环境安装的位置。
以test
环境为例,那么环境的安装位置就是D:\anaconda3\envs\test
我们可以直接进入这个文件夹,往下翻会发现一个python.exe
的应用程序,
新项目
我们可以在创建项目的时候直接指定python的环境。
在创建一个新项目时,会弹出这个界面,一开始我是稀里糊涂的一顿瞎填,反正不影响我写代码就行,现在我明白了。
在这个界面,先是对这个项目命名,然后是两个关键的选项
那就是创建新的环境还是使用已有的环境。我们肯定选择已有的环境,
如果之前有过环境,那么点击那个倒三角,会出现上一个项目的环境。
我们点击左边的Add Interpret(添加新环境)
在这里选择第一个,Add local Interpret…,会出现下面的界面
因为我们用的是anaconda里的环境,所以选择左侧的Conda Environment,然后选择环境的目录,
test
环境,安装位置就是D:\anaconda3\envs\test
注意,选择环境下的·python.exe
文件,完成配置
Make available to all projects:如果勾选,那就是以后所有的项目都用这个环境,看情况,我不会勾选的
这样,配置完成
对已有项目配置
就像我这种情况,这个项目我已经有了,但是他的环境错了,我该怎么办
这是我们创建的新项目,我们对这个项目换一个环境。
打开设置,快捷键Ctrl+Alt+S,
选择Project XXX选项下的Python Interpret。
可以点击倒三角选择已经用过的环境,也可以添加新的环境。
那么又到达了这个界面。
总结
这是一篇踩坑记录,本来是早就完成了,结果一直放倒了现在。
我觉得可以记录一下。尤其是conda的命令,
通过写这篇文章,我对python的环境又有一定的了解,所以,这波不亏。
好了,我的学习笔记到此结束。
里面肯定有许许多多的bug,欢迎大家指出!毕竟这样成长更快。
也感谢大家可以看到这样,如果帮到了你,是我的荣幸。
谢谢大家!