conda存在形态
交互入口 | 环境配置 | 物理文件 | 罗列环境 | 创建环境 | 切换环境 | 删除环境 |
anaconda 命令行 | ~\.condarc | ...\anaconda3\envs | conda env list | conda create -n py310 python=3.10 | conda activate py310 | conda remove --all -y -n py310 物理删 |
anaconda 客户端 | env列表 | 点击创建env | 点环境 | 点remove 物理删 | ||
pycharm 设置 | interpreter>local conda | 点创建conda | 点exist conda | show all>移除 逻辑删 |
conda源管理
- conda info 查看当前所有的源信息
- conda search python 查看所有可用的python版本
- conda search python=3.8 --subdir win-32 查32位包
- conda config --show-sources(罗列本地源和仓库源)
- conda config --show channels(罗列仓库源)
- conda config --remove channels 源名称或链接 (移除仓库源)
- conda config --add channels 源名或链接 (添加仓库源)
- 64位系统,安装32位python以及pyinstaller打包
- conda切换为32位模式:conda config --env --set subdir win-32
- conda创建环境指定32位:conda create -n test 32 python=3.10 --override-channels --subdir win-32 -c https://repo.anaconda.com/pkgs/main
- conda 32位最新支持到python3.10
ssl_verify: true
show_channel_urls: true
## custom local dir
envs_dirs:
- D:\codePython\python\anaconda3
pkgs_dirs:
- D:\codePython\anaconda3\pkgs
#proxy_servers:
# http: http://127.0.0.1:1081
channels:
- defaults
# channel - qinghua
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
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
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
conda包管理
- 清除全部缓存: conda clean --all 或 conda clean -a
- 清除包缓存: conda clean -p
- 清除tar包缓存: conda clean -t
- 检查环境:conda doctor
- 修复元数据:conda repair
- 查看变动版本 conda list --revisions 查看当前环境后续折腾过的情况
- 版本回滚 conda install --revision REV_NUM 回滚重置当前环境,默认为0
- 安装包 conda install -c conda-forge ffn
- 问题:激活环境后,有冗余包的解决。
排查:执行python -m site,可以看到conda虚拟环境会从C:\Users\cat\AppData\Roaming\Python\Python38\site-packages
带入很多包,污染了。这是因为安装时,用了 --user, 这个命令会安装到用户级别的python包环境下,并被conda创建的环境共享。
解决:激活环境下,把这些包都卸载了。再次安装即可
验证:在激活环境里再次安装包,只会出现在虚拟环境的包目录下,不会到用户级别环境的包目录。
环境重置脚本
#!/usr/bin/env python3
# coding=utf-8
"""
@File : utils_reset_python_env.py
@Author : AT
@Create : 2023/6/16 15:52
@Desc : 切换到需要重置清空的python环境,运行main方法或本文件即可
"""
import sys
import platform
import pkg_resources
import subprocess
def reset_packages_init(_init_list=['pip', 'setuptools', 'wheel']):
_print_python_interpreter()
_exist_list = _get_packages()
print(f"当前环境:初始化为: ({' '.join(_init_list)})")
_remove_list = list(set(_exist_list) - set(_init_list))
if _remove_list:
print(f"当前环境:pip uninstall -y {' '.join(_remove_list)}")
user_input = input("当前环境:pip uninstall continue: 0-No(默认), 1-Yes")
print(f'当前环境:pip uninstall continue:: 你的选择 = {user_input}')
if user_input == '1':
for _package in _remove_list:
_uninstall_package(_package)
_get_packages()
sys.exit()
def _print_python_interpreter():
print(f"当前环境:python版本={platform.python_version()}, 解释器路径={sys.executable})")
def _get_packages():
# 获取当前 Python 系统中所有已安装包的列表
installed_packages = pkg_resources.WorkingSet()
installed_packages_name = [dist.project_name for dist in installed_packages]
print(f"当前环境:installed_packages=({' '.join(installed_packages_name)})")
return installed_packages_name
def _uninstall_package(package):
try:
subprocess.run(['pip', 'uninstall', '-y', package])
except Exception as e:
print(f"卸载:{package} 失败!An error occurred: {e}")
if __name__ == '__main__':
reset_packages_init()
jupyter管理
- 查看kernel
方式一:notebook选择kernel下拉列表
方式二:jupyter kernelspec list
- 创建kernel
conda install ipykernel
python -m ipykernel install --user --name test3810 --display-name Python (test3810)"
- 启动notebook服务
pycharm终端:jupyter notebook --port 8889
开始菜单:Jupyter Notebook (quant3810).lnk
虚拟机jupyter服务:jupyter notebook --ip=0.0.0.0 需在虚拟机增加端口白名单 - 删除kernel
方式一:jupyter kernelspec uninstall test3810
方式二:python -m ipykernel uninstall --name test3810