一. 前言
一些简单记录, 可以和Ubuntu_WSL配置与使用手册 | Lian一起阅读.
1.1 环境
@Lian ➜ ~ ( base 3.9.12) 3.25s conda --version
conda 4.12.0
@Lian ➜ ~ ( base 3.9.12) 1.308s python --version
Python 3.9.12
二. python
2.1 查看安装的路径
注意多个不同版本python
混用的情况, 如在bat
批处理中调用python
, 或者为不同版本的python
安装包.
这个问题在Ubuntu
中最常见, 由于Ubuntu
默认已经安装有python
, 额外安装anaconda
就覆盖掉系统预装的.
还有就是某些版本ubuntu
中的python3, python2
关键词, 而不是直接使用python
.
如需不同版本的python, 可在虚拟环境下实现, 而不是直接安装.
# 当前使用的python, 进入python环境下
python
import os
import sys
os.path.dirname(sys.executable)
# exit()
# 等同于上述的python语句
python -c "import os, sys; print(os.path.dirname(sys.executable))"
where python
# 这是cmd的where命令, powershell不支持
# 列出所有的python版本
# 注意windows10下, AppData\Local\Microsoft\WindowsApps目录下的python.exe
语法
where [/r <Dir>] [/q] [/f] [/t] [$<ENV>:|<Path>:]<Pattern>[ ...]
参数
2.2 版本
python --version
# 等价
python -V
三. Anaconda
具体的使用细节整理见: NoteBook/others/Conda.png at main - Kyouichirou/NoteBook, 这里主要列举一些常见的使用命令.
anaconda
国内镜像站点: Index of /anaconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
这里conda
主要用于管理环境, 包管理还是使用pip
, 当然当某些情况下pip
无解时, conda
可以备用.
# 查看版本
conda --version
# 查看配置
conda config --show
3.1 查看配置
conda config --show
3.2 (谨慎)使用update
需要注意的是整体升级带来的问题.
# 该命令会导致系列问题
# 对于整体升级python或者anaconda都需要谨慎
# 可以再虚拟环境执行, 或者是VMware这些完全分离的环境操作
conda update python
3.3 创建虚拟环境
这是最实用的, 方便再不同环境下的测试使用.
# 查看有哪些python版本可用
conda search "^python$"
conda create -n pack_env python=3.11
# 参数
usage: conda create [-h] [--clone ENV] (-n ENVIRONMENT | -p PATH) [-c CHANNEL]
[--use-local] [--override-channels]
[--repodata-fn REPODATA_FNS] [--strict-channel-priority]
[--no-channel-priority] [--no-deps | --only-deps]
[--no-pin] [--copy] [-C] [-k] [--offline] [-d] [--json]
[-q] [-v] [-y] [--download-only] [--show-channel-urls]
[--file FILE] [--no-default-packages]
[--solver {classic} | --experimental-solver {classic}]
[--dev]
[package_spec [package_spec ...]]
# 参数
# -n, name, 环境名称
# python=3.11, 指定安装的python版本
# --clone
# Create a new environment as a copy of an existing local environment.
# --copy
# Install all packages using copies instead of hard- or soft-linking.
# -p 路径, 指定虚拟环境存储的位置
这里需要注意clone
和copy
之间的差异.
clone, Create a new environment as a copy of an existing local environment.
copy, Install all packages using copies instead of hard- or soft-linking.
还需要进一步控制虚拟环境安装的内容, 参照conda create 怎么创建纯净的 Python3.6 环境?
# 激活指定的环境
conda activate env_name (or env_path)
# 取消激活
conda deactivate env_name(optional)
3.4 查看虚拟环境
查看所有的虚拟环境
conda info -e
# 等价
conda env list
3.5 删除环境
conda remove -n env_name --all
3.6 导出/恢复环境
# 导出
conda env export > env.yml
# 恢复
conda env create -n revtest -f=/tmp/env.yml
3.7 变更国内镜像站点
Windows
用户如无名为 .condarc
的文件, 可先执行 conda config --set show_channel_urls yes
生成该文件之后再修改(当然直接vim创建, 写入亦可).
channels:
- defaults
show_channel_urls: true
default_channels:
- http://mirrors.aliyun.com/anaconda/pkgs/main
- http://mirrors.aliyun.com/anaconda/pkgs/r
- http://mirrors.aliyun.com/anaconda/pkgs/msys2
custom_channels:
conda-forge: http://mirrors.aliyun.com/anaconda/cloud
msys2: http://mirrors.aliyun.com/anaconda/cloud
bioconda: http://mirrors.aliyun.com/anaconda/cloud
menpo: http://mirrors.aliyun.com/anaconda/cloud
pytorch: http://mirrors.aliyun.com/anaconda/cloud
simpleitk: http://mirrors.aliyun.com/anaconda/cloud
注: 由于更新过快难以同步, 阿里云不同步
pytorch-nightly
,pytorch-nightly-cpu
,ignite-nightly
这三个包.
注意: 镜像站点的数据同步问题.
四. pip
这里需要注意的是, 国内的镜像站, 未必完全和pip
源完全同步, 部分下载量很小的包, 也许没有被同步到国内的镜像.
4.1 永久变更镜像源
anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
国内镜像源做的最好的是清华大学镜像站
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/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
比较有意思的是清华的镜像源有些包是官方站点已经下架的.
4.2 暂时变更镜像源
这里使用的是pip
官方源站点
pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
# 华为的镜像站点
pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
pip install streamlit-tree-select -i https://pypi.Python.org/simple/
4.3 包管理
4.3.1 执行方式的差异
如果去看源码的话, 你会发现 pip 作为执行文件的入口点是 pip._internal.main.
另一方面, pip 作为模块运行时入口是 _main.py, 而该模块也只是调用 pip.internal.main.
所以两种方式本质上是一样的, 需要注意的问题前面也有人提到过了, 如果系统中同时存在多个 python 解释器, 最好检查一下 python 和 pip 是不是来自同一个版本.
这里主要涉及
- 环境存在多个版本的
python
, 例如Ubuntu
预装有python
, 安装anaconda
将直接覆盖掉原有的python
. - 没配置
python
环境变量 - 潜在的其他安全因素?
python -m pip package_name
pip install pagekage_name
注: 暂未发现直接使用pip install的实际使用产生的问题.
其他参考, 作者强烈建议使用 -m
4.3.2 查看安装包的信息
pip show -f package_name
# 等价
pip show package_name
# 导出所有安装的包
pip list
pip list > list.txt
pip freeze
假如没有安装指定的包, 将出现警告信息
WARNING: Package(s) not found: emoji
4.3.3 安装包
# 常用命令
pip install package_name
# 指定安装版本
pip install -v numpy==1.13.1
# 等价
pip install robotframework==2.8.7
# 最小版本
pip install 'SomePackage>=1.0.4'
# 指定安装来源
pip install streamlit-tree-select -i https://pypi.Python.org/simple/
# 从版本文件安装
# cd 命令到改文件下
# windows10 shift + 鼠标右键 - 再当前目录下打开终端
pip install pycryptodome-3.6.5-cp37-cp37m-win_amd64.whl
# 等价
pip install <目录>/<文件名>
pip install --use-wheel --no-index --find-links=wheelhouse/ <包名>
# 从github安装(不建议, 稳定性极差)
pip install git + https://github.com/test/test.git
4.3.4 卸载
pip uninstall package_name
4.3.5 升级包
# 列出所有可以升级的包
pip list -o
# 查看过期的包
pip list --outdated
# 等价
pip list --outd
# 升级指定的包
pip install --upgrade package_name
pip install -U package_name
# 升级所有(不建议), 下载过程漫长(潜在错误)
# 先安装这个库
pip3 install pip-review
# 再执行
pip-review --local --interactive
4.3.6 导出包列表
例如再虚拟环境下配置好了一个项目, 需要迁移需要的包
# 导出对应的包
pip freeze > requirements.txt
# 文件将包含名称和对应的版本号
# 导入
pip install -r requirements.txt
五. pycharm/vscode
pycharm
提供了多种不同的解释器管理, 一般假如不需要使用虚拟环境时, 直接使用系统解释器即可.
相比之下vscode
可以自动添加环境进来, pycharm一直还需要手动添加.