文章目录
- 一、conda安装
- 1.1 conda安装
- 1.2 常见命令
- 1.3 常见问题
- 二、jupyterlab
- 2.1 jupyterlab安装和卸载
- 2.2 常见错误
- 2.2.1 版本冲突,jupyterlab无法启动
- 2.2.2 插件版本冲突
- 2.3 常用插件
- 2.3.1 debugger
- 2.3.2 jupyterlab_code_formatter
- 2.4 jupyter技巧
一、conda安装
Miniconda官网、Miniconda官方文档
1.1 conda安装
从Miniconda官网下载安装了conda 23.5.2,python版本是 3.11.4,安装时勾选add PATH:
最终用户变量中的配置为:
1.2 常见命令
下面是conda常用命令:
conda包管理命令 | 描述 |
---|---|
conda create --name myenv python=3.8 | 创建名为myenv的虚拟环境,指定python版本为3.8 |
conda activate myenv source activate myenv | 激活虚拟环境(windows) 激活虚拟环境(macOS和Linux) |
conda install package_name | 在激活的虚拟环境中安装Python包 |
conda list | 列出当前虚拟环境中已安装的包 |
conda deactivate | 停用当前虚拟环境 |
conda env export > environment.yml | 导出当前虚拟环境的配置到一个YAML文件 |
conda env create -f environment.yml | 根据YAML文件创建虚拟环境 |
conda remove --name myenv --all | 删除指定名称的虚拟环境及其所有包 |
conda search package_name | 搜索可用于安装的包 |
conda update --all | 升级当前虚拟环境中的所有包 |
conda虚拟环境管理命令 | 描述 |
---|---|
conda update conda | 升级conda本身 |
conda config --show | 显示conda的配置信息 |
conda env list 或conda info --envs | 列出所有已创建的虚拟环境 |
conda info --all | 显示所有conda信息 |
conda info --env | 显示当前虚拟环境的详细信息 |
conda config --set auto_activate_base false | 禁用默认激活基础环境(默认情况下会自动激活基础环境) |
conda config --set auto_activate your_env_name | 设置your_env_name为默认的激活环境 |
默认情况下,conda自动激活base环境为当前使用环境。如果要更改某个环境为默认激活环境,你需要进行一下操作:
conda config --set auto_activate_base false # 禁用默认激活基础环境
conda config --set auto_activate your_env_name # 设置your_env_name为默认的激活环境
如果要恢复默认激活base环境,需要运行:
conda config --set auto_activate_base true # 恢复默认激活base环境
首次使用conda config --set
命令,会在用户文件夹下创建配置conda文件.condarc
,set命令添加的配置信息会写入.condarc
文件。使用conda info命令可以查看此配置文件地址:
conda默认安装源是Anaconda仓库:
conda config --show-sources # 显示当前配置的源
conda config --backup # 备份原始配置文件
接下来,您可以使用以下命令设置国内的镜像源,这样下载速度更快:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 清华源
conda config --add channels https://mirrors.aliyun.com/pypi/simple/ # 阿里源
或者直接在.condarc
文件中写入:
# 配置文件中,注释以#符号开头,且不能写行内注释,只能单独放一行
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
上述配置文件中默认使用清华源进行安装,如果要使用别的安装源,可以使用-c
选项显式指定其他渠道。
# conda-forge是配置文件中的channel名称,package_name是安装包的名称
conda install -c conda-forge package_name
每个渠道都有自己的特定用途和软件包集合,您可以根据自己的需求选择使用其中的一个或多个渠道来安装相关的软件包。
conda-forge
:社区驱动的Conda渠道,覆盖了各种领域,包括科学计算、数据分析、机器学习、计算机视觉等。它包含了大量常用的软件包,并且更新频率较高。msys2
:`如果您需要在Windows上构建和运行需要Unix/Linux工具的软件包,这个渠道可能会有用。bioconda
:bioconda
是一个专门用于生物信息学和生物数据分析的Conda渠道。menpo
:menpo
渠道通常与Menpo项目相关,Menpo是一个计算机视觉和机器学习库。这个渠道包含了与Menpo项目相关的软件包和工具。pytorch
:pytorch
渠道包含了与PyTorch深度学习框架相关的软件包和工具。simpleitk
:simpleitk
渠道包含了与SimpleITK(简化的医学图像处理工具包)相关的软件包和工具。
1.3 常见问题
- Anaconda powershell Promp报错
打开Anaconda powershell Promp出现如下报错:
无法将“E:\miniconda\Scripts\conda.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包
括路径,请确保路径正确,然后再试一次。
所在位置 C:\Users\LS\Documents\WindowsPowerShell\profile.ps1:4 字符: 4
+ (& "E:\miniconda\Scripts\conda.exe" "shell.powershell" "hook") | Out- ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (E:\miniconda\Scripts\conda.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
这是因为之前安装的conda在PowerShell 配置文件 profile.ps1
中残留了相关配置信息(& "E:\miniconda\Scripts\conda.exe" "shell.powershell" "hook") | Out- ...
,只需要将其改为:
(& "D:\Miniconda\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression
之前安装在E盘,卸载之后没有清理powershell中的配置信息,现在改为D盘的安装目录就行
- 系统重装之后快捷方式失效
conda安装之后,会在开始菜单栏自动生成上面两个快捷启动方式,系统重装之后会失效。此时重新安装,会另外再生成一组,之前失效的删除就行 - 卸载问题
conda安装启动之后,会在用户文件夹生成.conda
文件夹和.condarc
文件,如果要卸载conda,需要清理这些文件。
二、jupyterlab
2.1 jupyterlab安装和卸载
使用conda install
命令进行安装,jupyterlab最新只有3.6.3版本。所以直接使用pip install
安装jupyterlab 4.0.6。然后使用以下命令安装 JupyterLab 的中文语言包:
pip install jupyterlab-language-pack-zh-CN
另外还安装了
E:\nlp\ChatGLM2-6B-main
和E:\nlp\alpaca-lora-main
下的requirements.txt
,以及sentence-transformers, faiss-cpu,blingfire
。
如果要完全卸载 jupyterlab,运行以下命令:
pip uninstall jupyterlab # pip安装的执行此命令
conda uninstall jupyterlab # conda安装的执行此命令
# JupyterLab 会在用户的 home 目录下创建一个配置文件夹,需要删除
rm -r ~/.jupyter
另外还需要删除 JupyterLab 扩展和内核
# 列出已安装的扩展和内核
jupyter labextension list
jupyter kernelspec list
# 卸载扩展和内核
jupyter labextension uninstall 扩展名称
jupyter kernelspec uninstall 内核名称
2.2 常见错误
2.2.1 版本冲突,jupyterlab无法启动
正常安装成功jupyterlab之后,在cmd中可以使用以下命令查看版本信息
jupyter-lab --version
4.0.6
然后使用jupyter-lab
启动jupyterlab,或者在地址栏输入jupyter lab
在指定目录启动jupyterlab:
但是有一次这两种方式都无法启动,且输入jupyter-lab
命令时报错某些包无法导入。估计是我conda安装了jupyterlab 3.6.3,pip安装了jupyterlab 4.0.6,导致版本冲突。因为安装jupyterlab时会同时安装很多依赖包,虽然我是卸载上一个安装版本,但是依赖包并没有卸载,导致新的jupyterlab版本启动时冲突。
2.2.2 插件版本冲突
jupyterlab 4直接集成了debugger,一开始不知道,在插件管理器中没搜出来,直接pip安装:
jupyter labextension install @jupyterlab/debugger
结果每次启动jupyterlab时都报错(虽然还是可以启动,但是看着报错就很烦)
2.3 常用插件
2.3.1 debugger
debugger文档
jupyterlab 2或3版本可以直接在插件管理器中安装jupyterlab/debugger:
jupyterlab 4直接集成了debugger,可以点击notebook右上角的调式按钮(蓝色框),其显示红色就是进入了调试模式。然后和pycharm一样,在需要调试的地方打上断点。点击view-debugger或者右侧边栏的调试按钮(红色框),就可以打开显示调试信息的地方。
上面是使用transformers库进行多选问答时,自定义DataCollatorForMultipleChoice类的代码。在运行以下代码时,会自动跳到断点位置,显示变量信息:
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_train_ds,
eval_dataset=tokenized_train_ds,
tokenizer=tokenizer,
data_collator=DataCollatorForMultipleChoice(tokenizer=tokenizer),
)
trainer.train()
- 变量区有列表和树状两种显示方式,变量的值没有显示完全,可以直接复制出来查看。默认变量窗口显示四行,如果不够可以下拉变量窗口。
- 中间是调试操作按钮,可以点击,也可以使用对应快捷键。
- 下面的源文件区和左侧都显示调试是代码停止的位置。
例如调试看出变量的格式:
label_name = "label" if 'label' in features[0].keys() else 'labels'
# 原始features(4个样本)
[{'input_ids': [...], 'token_type_ids': [...], 'attention_mask': [...], 'label': 0},
{'input_ids': [...], 'token_type_ids': [...], 'attention_mask': [...], 'label': 0},
{'input_ids': [...], 'token_type_ids': [...], 'attention_mask': [...], 'label': 1},
{'input_ids': [...], 'token_type_ids': [...], 'attention_mask': [...], 'label': 0}]
# 对每个样本(feature,字典格式)使用pop删除key为label的键值对,返回被删除的值
# 所以feature被删除了label键值对,而labels的值是四个样本label列表[0, 0, 1, 0]
labels = [feature.pop(label_name) for feature in features]
# 去除label的后的feature(一个样本)
{'input_ids': [[...], [...], [...], [...], [...]],
'token_type_ids': [[...], [...], [...], [...], [...]],
'attention_mask': [[...], [...], [...], [...], [...]]}
2.3.2 jupyterlab_code_formatter
github仓库
jupyterlab_code_formatter 主要用于格式化代码,支持多种语言:
2.4 jupyter技巧
参考《JupyterLab 极其强大的 10 个秘密技巧》
- 多行选择
- 添加虚拟环境
使用以下命令将虚拟环境作为内核添加到Jupyter Lab,这样就可以作为一个选项出现在Launcher或内核列表的右上角:
$ pip install ipykernel
$ ipython kernel install --user --name=new_or_existing_env_name
注意:以上代码需要在你需要添加的虚拟环境使用,而不是jupyter lab的环境
- 使用
jupyter run
命令运行notebook
使用jupyter run
命令,可以像Python脚本一样顺序执行每个笔记本单元格。该命令会以JSON的形式返回每个单元格的输出,所以如果有大量文本输出可能会卡顿。我们可以将不同的超参数保存到单个笔记本中然后运行,这样可以保存运行记录。
jupyter run path_to_notebook.ipynb
-
分割编辑器窗口
Jupyter Lab的窗口以标签的形式展示,我们一次可以打开好几个编辑窗口,并且可以拖动窗口,将编辑器窗口分割,演示如下: -
随时查看文档
有三种方法可以直接从编辑器中查找几乎任何函数或魔法命令的文档。- 使用Shift + Tab键盘快捷键(默认),它会显示一个弹出窗口,其中包含光标所在的函数或类的文档:
- 上下文帮助:如果不喜欢点击其他地方后弹出窗口消失,还可以通过帮助菜单或
Ctrl + I
使用上下文帮助。上下文帮助显示游标指向的函数或类的实时文档。
- 简单地在函数或类名的末尾添加一个问号(不带括号)
- 使用Shift + Tab键盘快捷键(默认),它会显示一个弹出窗口,其中包含光标所在的函数或类的文档:
-
使用感叹号(!)运行终端命令
# 查看目录
!pwd
下面是一个更实际的例子。假设有一个数据文件夹,其中包含用于模型训练的图像。所有图像都根据它们的类被分类到目录中。现在需要使用一个快速的方法来计算data/raw/train内部的目录数量,并将其输出存储在number_of_classes中:
number_of_classes = !ls -1 data/raw/train | wc -l
>>> print(number_of_classes)
43
一句shell命令就能解决问题,这样就不用我们写python的目录遍历代码了
-
winsound
通知执行
winsound
是 Python 标准库中的一个模块,它允许你在 Windows 操作系统上控制声音和播放简单的声音效果。主要用于创建音频提醒、警告或播放简单的声音文件,通常用于命令行脚本、小工具或基本的声音控制需求。
winsound
模块提供了一些主要的功能和方法,包括:-
Beep(frequency, duration)
: 用来发出蜂鸣声。frequency
指定了蜂鸣声的频率(以赫兹为单位),duration
指定了蜂鸣声的持续时间(以毫秒为单位)。 -
PlaySound(sound, flags)
: 该函数允许你播放.wav格式的声音文件(不支持mp3等复杂音频格式)。sound
参数是声音文件的文件名或路径,flags
参数用于指定播放的方式和行为,例如是否循环播放、异步播放等。 -
MessageBeep(type)
: 这个函数可以用来发出系统定义的警告声音,type
参数指定了警告声音的类型。
-
以下是一个简单的示例,演示了如何使用 winsound
模块发出蜂鸣声:
import winsound
# 训练模型
......
trainer.train()
# 训练完成后进行通知
duration = 5000
frequency = 440
winsound.Beep(frequency, duration)
- 自动重载和高亮显示脚本
如果我们更新了导入的脚本,除非重新启动内核,否则Jupyter将不会自动检测到更改,这会产生很多问题。所以我们可以使用autoreload 命令来避免这个问题:
%load_ext autoreload
%autoreload 1
上述代码将每秒钟检测并刷新一次内核。它不仅会检测脚本更改,还会检测对所有文件的更改。
另外对于python脚本,我们还可以使用pycat
命令来以语法高亮的形式显示Python脚本的内容。对于其他文件格式,可以使用cat命令。