一文学会Anaconda!

我使用的pytoch版本:

conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia

服务器版本

conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia

查看pytorch、cuda版本以及gpu:

import torch
print(torch.__version__)
print(torch.cuda.current_device())# 返回当前设备索引
print(torch.cuda.is_available()) # 查看CUDA是否可用
print(torch.cuda.device_count()) # 查看可用的CUDA数量
print(torch.version.cuda) # 查看CUDA的版本号
print(torch.cuda.get_device_name(0))# 返回gpu名字,设备索引默认从0开始

安装pytorch:
查看cuda版本,使用命令:

nvidia-smi

在这里插入图片描述最高支持12.2的版本,向下兼容
下载地址:

https://pytorch.org/get-started/locally/

在这里插入图片描述这里选择pip安装

https://pytorch.org/get-started/previous-versions/

在这里插入图片描述选择好对应的CUDA版本,12.2>11.7
conda安装:

# CUDA 11.6
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia
# CUDA 11.7
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
# CPU Only
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 cpuonly -c pytorch

pip安装:
在这里插入图片描述pip安装更快:这个是torch==1.12.1+cu11x

# ROCM 5.1.1 (Linux only)
pip install torch==1.12.1+rocm5.1.1 torchvision==0.13.1+rocm5.1.1 torchaudio==0.12.1 --extra-index-url  https://download.pytorch.org/whl/rocm5.1.1
# CUDA 11.6
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116
# CUDA 11.3
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
# CUDA 10.2
pip install torch==1.12.1+cu102 torchvision==0.13.1+cu102 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu102
# CPU only
pip install torch==1.12.1+cpu torchvision==0.13.1+cpu torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cpu

安装pytorch-geometric:(PyG 2.3 requires that at least PyTorch 1.11 is installed.)

pip install torch_geometric

安装Additional Libraries:
在这里插入图片描述查看torch版本,命令行运行:

python -c "import torch; print(torch.__version__)"

输出:

1.12.1

查看CUDA版本,命令行运行:

python -c "import torch; print(torch.version.cuda)"

安装:

pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}.html

我的:

pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-1.12.1+cu117.html

安装放后面了,参考https://blog.csdn.net/wq_ocean_/article/details/103889237

1. 使用conda进行python环境管理

1. 查看conda版本
conda -V
2. 创建环境:
conda create -n your_env_name python=X.X
或者 conda create --name your_env_name python=X.X
3. 查看有哪些conda环境:
conda env list
C:\Users\13276>conda env list
# conda environments:
#
base                     D:\program\anaconda3
CLPDR                    D:\program\anaconda3\envs\CLPDR
CMeKG                    D:\program\anaconda3\envs\CMeKG
English2Chinese          D:\program\anaconda3\envs\English2Chinese
LPRecognition            D:\program\anaconda3\envs\LPRecognition
d2l                      D:\program\anaconda3\envs\d2l
d2l-zh                   D:\program\anaconda3\envs\d2l-zh
neo4j                    D:\program\anaconda3\envs\neo4j
pykg2vec                 D:\program\anaconda3\envs\pykg2vec
pykg2vec38               D:\program\anaconda3\envs\pykg2vec38
stableDiffusion          D:\program\anaconda3\envs\stableDiffusion
4. 切换到某环境:
conda activate your_env_name(虚拟环境名称)
5. 查看环境中的包:
conda list
# packages in environment at D:\program\anaconda3\envs\pykg2vec38:
#
# Name                    Version                   Build  Channel
alabaster                 0.7.12             pyhd3eb1b0_0    defaults
cuda-libraries            11.7.1                        0    nvidia
pytorch                   1.13.1          py3.8_cuda11.7_cudnn8_0    pytorch
pytorch-cuda              11.7                 h16d0643_5    pytorch
python_abi                3.8                      2_cp38    conda-forge
opencv-python             4.7.0.72                 pypi_0    pypi
pandas                    1.2.4            py38hd77b12b_0    defaults
pathlib                   1.0.1              pyhd3eb1b0_1    defaults
pillow                    9.4.0            py38hd77b12b_0    defaults
pip                       23.0.1           py38haa95532_0    defaults 
requests                  2.25.1             pyhd3deb0d_0    conda-forge
torchaudio                0.13.1                   pypi_0    pypi
torchvision               0.14.1                   pypi_0    pypi
tqdm                      4.65.0           py38hd4e2768_0    defaults

用pip安装的包显示的项目build为pypi !!!

6. 在当前环境下安装包:
conda install pip [=指定版本x.x]
7. 在当前环境下删除包:
conda remove pip
8. 退出本环境:
conda deactivate
9. 删除环境:
conda remove -n your_env_name --all
10. 查看某个包是否安装:
conda list xxx #包的名称 

2. 为什么anaconda环境中,还需要用pip安装包,此情况下用pip需要哪些注意项

2.1 在anaconda下用pip装包的原因

尽管在anaconda下我们可以很方便的使用conda install来安装我们需要的依赖,但是anaconda本身只提供部分包,远没有pip提供的包多,有时conda无法安装我们需要的包,我们需要用pip将其装到conda环境里。

2.2 用pip装包时候需要哪些注意事项?

首先,我们需要判断目前我们用的pip指令,会把包装到哪里,通常情况下,pip不像conda一样,他不知道环境,我们首先要确保我们用的是本环境的pip,这样pip install时,包才会创建到本环境中,不然包会创建到base环境,供各个不同的其他conda环境共享,此时可能会产生版本冲突问题(不同环境中可能对同一个包的版本要求不同)

查看pip是不是本环境下的pip:
在这里插入图片描述可以看到是在当前环境pykg2vec38的lib里面,因此该pip位于本环境下

经试验,anaconda4.8版本,在conda create新的环境时,已经默认在新环境装了pip,此时进入该环境后,用pip命令安装的包,默认会装在本环境中,不必担心pip一个包后后会将其他环境的包改变版本的情况)

使用 pip install opencv-pythonpip install torchvisionconda install pytorch 之后查看包安装的位置:

在这里插入图片描述可以看到包都位于本环境中

当然我们自己创建的conda环境里,可能没有pip,此时进入自己的conda环境也会默认用base环境的pip,这就需要我们自己将pip安装入本环境,尽量不要使用base的pip在其他环境装包,这样也会装在base里,有产生版本冲突的可能(上文已讲)。

3 Anaconda根目录的pkgs文件夹和某一环境下的site-packages文件夹的区别,以及使用conda install按照包的总流程

pkgs 文件夹和 site-packages 文件夹分别扮演了不同角色。

pkgs 文件夹位于 Anaconda 的根目录下,它是一个包缓存文件夹,主要用于存储通过 conda 安装的包的缓存文件。
当你使用conda install 命令安装新包时,首先会在 pkgs 文件夹中检查是否存在此包的缓存文件,如果不存在,则从远程仓库下载相应的包。

site-packages 文件夹位于每个 conda 环境的 lib 目录下。它存储了该环境中安装的 Python包。当你在某个环境中使用 conda install 命令安装包时,这些包会被链接到或复制到相应环境的 site-packages文件夹中。

以下是使用 conda install 命令安装包时的整个流程:

首先,conda 会检查当前激活的环境。如果没有激活任何环境,conda 会使用默认的 base 环境。

conda 会检查 pkgs 文件夹中是否已经存在要安装的包。如果存在,将跳过下载步骤;如果不存在,则从远程仓库(如 Anaconda Cloud)下载相应的包。

下载完成后,conda 会将包文件存储到 pkgs 文件夹中,以便于未来的安装操作。

conda 将检查包的依赖关系,并确保所有必要的依赖项都已安装。如果缺少任何依赖项,conda 会自动安装它们。

最后,conda 会将包和其依赖项链接到或复制到当前激活环境的 site-packages 文件夹中。这样,当你在该环境中运行 Python
代码时,你就可以导入并使用这些包了。

4. pip与conda比较:

依赖项检查

pip:不一定会展示所需其他依赖包

安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误

conda:列出所需其他依赖包

安装包时自动安装其依赖项

可以便捷地在包的不同版本中自由切换

环境管理

pip:维护多个环境难度较大

conda:比较方便地在不同环境之间进行切换,环境管理较为简单

对系统自带Python的影响

pip:在系统自带Python中包的更新/回退版本/卸载将影响其他程序

conda:不会影响系统自带Python,并且把python也当成包,确实有点倒反天罡了

适用语言

pip:仅适用于Python

conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++,
FORTRAN

conda结合了pip和virtualenv的功能

5. 配置Anaconda源

通常anaconda的默认源在境外,下载速度会非常慢甚至导致网络错误下载包失败,打开Anaconda
Prompt使用以下方法将清华镜像添加到anaconda

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ 
conda config --set show_channel_urls yes

用conda info命令查看当前channel:
在这里插入图片描述
如果conda install 仍然出现下载速度慢的错误,这个时候可以直接将 C:/User/用户名 目录下 .condarc文件 里面的-default一行删去

6. 合理使用requirement.txt

6.1 问题背景

  1. 有时候我们在网上参考某些项目的时候,通常会给出requirement.txt文件,其中就是包括了本次项目所需要用到的库以及环境,一键配置好这些库函数就显得十分有必要了。
  1. 还有时候我们自己电脑的环境配置好后,需要在另外的机器上写程序,这个时候一键配置也是十分有用,不然一个一个的pip install/conda install还是挺麻烦的/(ㄒoㄒ)/

6.2 解决方案

在使用Python的时候,需要把安装的Package通过requirements.txt导出来,一个命令便可部署新环境。

requirements.txt,是用于记录所有依赖包及其精确的版本号。

6.3 操作步骤

第一步:

pip freeze > requirements.txt

自动生成requirement.txt ,执行成功后,会自动生成requirement.txt文件。

第二步:更换环境,分享项目的同时,带上requirement.txt文件!方便其他人配置。

第三步:安装requirement.txt,执行命令即可一键安装完所需要的第三方库。命令:

pip install -r requirements.txt

或者是conda:
第一步:
激活所配置的环境

activate your_environment

第二步:

 conda env export > environment.yaml

来保存环境的yaml文件
第三步: 当我们想再次创建该环境,可以根据别人提供的.yaml文件复现环境,使用命令即可完成环境配置:

conda env create -f environment.yaml

conda命令——导出当前环境下所使用的包,生成requirements.txt:

conda list -e > requirements.txt  #导出当前环境所有的依赖包及其对应的版本号

conda命令——安装requirements.txt中的包:

conda install --yes --file requirements.txt   #在新的环境中安装导出的包

可以通过扫描项目中的import导出依赖包:

pip install pipreqs
pipreqs ./

在这里插入图片描述查看包的安装位置:

在这里插入图片描述在这里插入图片描述

实测:通过pip install -r requirements.txt 按照的环境同样在本环境中,安装完成之后需要重启pycharm才会刷新环境

7. 清理anaconda

7.1 使用如下命令清除多余的环境:

conda remove -n your_env_name --all

7.2 清除不用的包

当conda使用很久之后,就会在conda安装路径下的pkgs路径下存在很多,而且会占用很多,我看自己机器上已经占用接近100g了,于是其进行清理,使用如下命令:

conda clean -*

在这里插入图片描述当您使用conda安装包时,它会将包及其依赖项下载并缓存在本地。这些缓存文件可能会占用大量磁盘空间,特别是在您使用conda安装了大量包之后。此外,有时您可能已经安装了某些包,但后来不再需要它们,这些未使用的包也会占用磁盘空间。

为了清理这些未使用的包和缓存文件,您可以使用conda的clean命令。这个命令有几个选项,可以帮助您清理不同类型的文件。

conda clean --all

这个命令会清理所有未使用的包以及conda缓存的所有文件,包括已下载的tar文件和不需要的缓存文件。执行此操作后,您的conda环境将回到初始状态,只包含您当前使用的包。

conda clean --packages

这个命令将只清理未使用的包,但不会清理缓存文件。执行此操作后,您的conda环境将仍然包含缓存文件,但不包含未使用的包。

conda clean --index-cache

这个命令将清除conda索引缓存,这是conda用于查找可用包的缓存文件。执行此操作后,第一次运行conda命令时可能会稍微慢一些,因为conda需要重新构建索引缓存文件。

需要注意的是,清理未使用的包可能会导致某些依赖关系发生变化,因此建议在执行此操作之前备份您的环境或使用虚拟环境。另外,在清理缓存文件之前,也建议备份您的环境,以防止意外删除重要的缓存文件。

在这里插入图片描述

-3. 程序入口

对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等。其中C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样的,Java 和 C# 则必须要有一个包含 Main 方法的主类来作为程序入口。

但和C,C++、Java 以及 C# 等有所不同的是,Python属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,python是动态的逐行解释运行,也就是从脚本第一行开始运行,没有统一的入口。

另外我们知道,python文件有两种使用方法:

第一种:直接作为脚本执行
第二种:import到其他的python脚本中被调用(模块重用)执行,也就是作为模块(库)被导入执行

不管是直接运行还是导入,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。但实际使用过程中,python文件作为模块被其它python脚本调用执行的时候,有的代码我们是不希望被运行的。

if __name__ == '__main__' 的作用就是定义这两种情况执行代码的执行方式,在该语句下的代码只有在文件作为脚本直接执行情况下才会被执行,而import到其他脚本中是不会被执行的。

-2. 包,模块,库

在python中每一个以.py结尾的文件都是一个包,所以在我们使用别人的包时,其实是引入别人写的文件啦。值得一提的是,在我们使用import a的过程中,其实就相当于加载或者运行了这个python文件了,如果在a.py文件中有输出语句或者函数调用的话,那么在import a后就会输出该输出语句或者调用该函数了,可以通过__name__查看当前当前运行在哪一个模块里。

举个例子来说:要计算一个圆形的面积,
首先创建一个 param.py文件:

pi = 3.1415926

def main():
    print('pi:', pi)
 
main()

在param.py文件里定义了一个参数 pi,直接执行该文件输出:

pi: 3.1415926

第二步:然后创建 calculate.py 文件,用于计算圆的面积,该文件里边需要用到 param.py 文件中的 pi 参数,需要我们从 param.py 中把 pi 变量导入到 calculate.py 中:

from param import pi
 
def area_calculate(r):
    s = pi * (r ** 2)
    return s
 
def main():
    print('The area of the circle: ', area_calculate(2))

print(__name__)

main()

运行 calculate.py(python calculate.py),输出结果:

pi: 3.1415926
__main__
The area of the circle:  12.5663704

从输出结果可以看出,param.py 中的 main 函数也被运行了,实际上我们不希望它被运行。并且在 calculate.py中的__name__=='__main__'
这时我们就可以用if __name__ == '__main__' 对 param.py 做修改:

pi = 3.1415926

def main():
    print('pi:', pi)
    
print(__name__)

if __name__ == '__main__':
    main()

再次运行param.py,输出如下:

__main__
pi: 3.1415926

再次运行 calculate.py,输出如下:

param
__main__
The area of the circle:  12.5663704

可以看出在引入param.py之后,param.py文件中的程序都会运行一遍,因为在calculate.py运行过程中param.py中的__name__ ==param,因此 param.py中的if __name__ == '__main__':没有成立,因此在运行 calculate.py后并没有运行main方法也因此没有打印pi。并且在引入模块之后,运行该模块的代码时__name__是当前模块的文件名(去掉后缀),而运行到主文件的代码时(因为我们习惯于将import放到前面),__name__=='main'

if __name__ == '__main__'就相当于是 Python 模拟的程序入口。Python 本身并没有规定这么写,这只是一种编码习惯。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于__name__的值。而__name__是内置变量,用于表示当前模块的名字。

-1. pip安装

1. 查看已安装的库
pip list
3. pip install  第三方库名称
4. 指定第三方库的版本安装命令:
指定版本号的几种方式:
 	  不指定的情况下,默认安装最新的
    == 指定具体版本号
    <= 指定最高版本号
    >= 指定最低版本号
    < 不高于某版本号
    > 不低于某版本号
    
pip install  第三方库名称==版本号
5. 查看当前pip源
pip config list
6. 设置清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
7. 临时指定channel:
pip install 包名称 -i https://pypi.tuna.tsinghua.edu.cn/simple   #清华镜像
8. 卸载包
pip uninstall 第三方库名称
9. 查看包安装位置和介绍
pip show packagename

在这里插入图片描述
在conda环境下有时不生效

0. 安装

安装时注意以下几步:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考:
https://blog.csdn.net/yawei_liu1688/article/details/108597939
https://www.cnblogs.com/zhangxingcomeon/p/13801554.html
https://blog.csdn.net/sdywtzymy/article/details/106710134
https://blog.csdn.net/weixin_56197703/article/details/124630222
https://blog.csdn.net/qq_41667743/article/details/128186370
https://blog.csdn.net/wq_ocean_/article/details/103889237
https://blog.csdn.net/qq_42346574/article/details/115235307?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168863775816800182719885%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168863775816800182719885&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-115235307-null-null.142v88insert_down28v1,239v2insert_chatgpt&utm_term=requirement.txt&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

且放白鹿青涯间

你的打赏将是我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值