博主原文链接:https://www.yourmetaverse.cn/nlp/291/
使用conda进行python环境管理
Anaconda、conda、pip、virtualenv的区别
(1)Anaconda
Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。
(2)conda
conda是包及其依赖项和环境的管理工具。
▪ 适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
▪ 适用平台:Windows, macOS, Linux
▪ 用途:
① 快速安装、运行和升级包及其依赖项。
② 在计算机中便捷地创建、保存、加载和切换环境。
如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。——Conda官方网站
▪ conda为Python项目而创造,但可适用于上述的多种语言。
▪ conda包和环境管理器包含于Anaconda的所有版本当中。
(3)pip
pip是用于安装和管理软件包的包管理器。
▪ pip编写语言:Python。
▪ Python中默认安装的版本:
① Python 2.7.9及后续版本:默认安装,命令为 pip
② Python 3.4及后续版本:默认安装,命令为 pip3
▪ pip名称的由来:pip采用的是递归缩写进行命名的。其名字被普遍认为来源于2处:
① “Pip installs Packages”(“pip安装包”)
② “Pip installs Python”(“pip安装Python”)
(4)virtualenv
virtualenv是用于创建一个独立的Python环境的工具。
▪ 解决问题:
当一个程序需要使用Python 2.7版本,而另一个程序需要使用Python 3.6版本,如何同时使用这两个程序?如果将所有程序都安装在系统下的默认路径,如:/usr/lib/python2.7/site-packages,当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。
如果想要安装程序并在程序运行时对其库或库的版本进行修改,都会导致程序的中断。
在共享主机时,无法在全局 site-packages 目录中安装包。
▪ virtualenv将会为它自己的安装目录创建一个环境,这并不与其他virtualenv环境共享库;同时也可以选择性地不连接已安装的全局库。
(5)pip 与 conda 比较
依赖项检查
▪ pip:
① 不一定会展示所需其他依赖包。
② 安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
▪ conda:
① 列出所需其他依赖包。
② 安装包时自动安装其依赖项。
③ 可以便捷地在包的不同版本中自由切换。
环境管理
▪ pip:维护多个环境难度较大。
▪ conda:比较方便地在不同环境之间进行切换,环境管理较为简单。
对系统自带Python的影响
▪ pip:在系统自带Python中包的更新/回退版本/卸载将影响其他程序。
▪ conda:不会影响系统自带Python。
适用语言
▪ pip:仅适用于Python。
▪ conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
(6)conda与pip、virtualenv的关系
conda结合了pip和virtualenv的功能。
使用conda进行python环境管理
(1)创建虚拟环境
创建环境
首先创建一个环境名称为test,python版本号为3.8的虚拟环境,如下所示:
conda create --name [环境名称] python=[python版本号,如3.6、3.7、3.8、3.9、3.10]
例如:
conda create --name test python=3.8
输出如下:
(base) 用户名@主机名:~# conda create --name test python=3.8
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /root/anaconda3/envs/test
added / updated specs:
- python=3.8
The following packages will be downloaded:
package | build
---------------------------|-----------------
certifi-2022.9.24 | py38h06a4308_0 154 KB
libffi-3.4.2 | h6a678d5_6 136 KB
pip-22.2.2 | py38h06a4308_0 2.3 MB
python-3.8.15 | h7a1cb2a_2 20.1 MB
setuptools-65.5.0 | py38h06a4308_0 1.1 MB
------------------------------------------------------------
Total: 23.8 MB
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-5.1-1_gnu
ca-certificates pkgs/main/linux-64::ca-certificates-2022.10.11-h06a4308_0
certifi pkgs/main/linux-64::certifi-2022.9.24-py38h06a4308_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.38-h1181459_1
libffi pkgs/main/linux-64::libffi-3.4.2-h6a678d5_6
libgcc-ng pkgs/main/linux-64::libgcc-ng-11.2.0-h1234567_1
libgomp pkgs/main/linux-64::libgomp-11.2.0-h1234567_1
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-11.2.0-h1234567_1
ncurses pkgs/main/linux-64::ncurses-6.3-h5eee18b_3
openssl pkgs/main/linux-64::openssl-1.1.1s-h7f8727e_0
pip pkgs/main/linux-64::pip-22.2.2-py38h06a4308_0
python pkgs/main/linux-64::python-3.8.15-h7a1cb2a_2
readline pkgs/main/linux-64::readline-8.2-h5eee18b_0
setuptools pkgs/main/linux-64::setuptools-65.5.0-py38h06a4308_0
sqlite pkgs/main/linux-64::sqlite-3.40.0-h5082296_0
tk pkgs/main/linux-64::tk-8.6.12-h1ccaba5_0
wheel pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.8-h5eee18b_0
zlib pkgs/main/linux-64::zlib-1.2.13-h5eee18b_0
Proceed ([y]/n)? y
Downloading and Extracting Packages
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate test
#
# To deactivate an active environment, use
#
# $ conda deactivate
激活环境
然后激活该环节
使用如下命令:
conda activate test
输出如下:
(base) 用户名@主机名:~# conda activate test
(test) 用户名@主机名:~#
查看环境
使用pip list或者conda list查看环境
pip list
conda list
输出如下:
(test) 用户名@主机名:~# pip list
Package Version
---------- ---------
certifi 2022.9.24
pip 22.2.2
setuptools 65.5.0
wheel 0.37.1
(test) 用户名@主机名:~# conda list
# packages in environment at /root/anaconda3/envs/test:
#
# Name Version Build Channel
_libgcc_mutex 0.1 main
_openmp_mutex 5.1 1_gnu
ca-certificates 2022.10.11 h06a4308_0
certifi 2022.9.24 py38h06a4308_0
ld_impl_linux-64 2.38 h1181459_1
libffi 3.4.2 h6a678d5_6
libgcc-ng 11.2.0 h1234567_1
libgomp 11.2.0 h1234567_1
libstdcxx-ng 11.2.0 h1234567_1
ncurses 6.3 h5eee18b_3
openssl 1.1.1s h7f8727e_0
pip 22.2.2 py38h06a4308_0
python 3.8.15 h7a1cb2a_2
readline 8.2 h5eee18b_0
setuptools 65.5.0 py38h06a4308_0
sqlite 3.40.0 h5082296_0
tk 8.6.12 h1ccaba5_0
wheel 0.37.1 pyhd3eb1b0_0
xz 5.2.8 h5eee18b_0
zlib 1.2.13 h5eee18b_0
使用conda info --envs查看环境
(test) 用户名@主机名:~# conda info --envs
# conda environments:
#
base /root/anaconda3
test * /root/anaconda3/envs/test
退出环境
conda deactivate
(2)生成此环境对应的jupyter lab选项卡;
安装ipykernel
使用pip安装ipykernel
pip install ipykernel
安装jupyter menus
python -m ipykernel install --user --name [环境名称] --display-name "[展示名称]"
例如:
python -m ipykernel install --user --name test --display-name "Test"
测试使用的kernel的位置
在jupyter notebook或者jupyter lab中选择Test kernel,输入下面代码,看看是否是环境的安装路径
import sys
print (sys.executable)
参考文献
[1] anaconda https://baike.baidu.com/item/anaconda/20407441
https://www.anaconda.com
[2] 初学 Python 者自学 Anaconda 的正确姿势是什么?https://zhuanlan.zhihu.com/p/32925500
[3] Anaconda介绍、安装及使用教程 https://zhuanlan.zhihu.com/p/32925500
[4] conda常用命令汇总 https://blog.csdn.net/raelum/article/details/125109819
[5] Conda介绍 https://blog.csdn.net/koflance/article/details/78582737
[6] 用conda进行python虚拟环境创建、管理以及jupyter和pycharm使用此环境 https://zhuanlan.zhihu.com/p/64100305