pip install 无法安全安装

在使用pip install 安装 Python 包的时候会报错反馈:

usr@debian:~/Documents/git/ChatGLM3$ pip install -r requirements.txt 
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
usr@debian:~/Documents/git/ChatGLM3$ 

虽然加一个 --break-system-packages 参数就可以强制安装,但是总是害怕会破坏系统,所以这个问题可以就解决吗?还是说不用管呢?

不是说了么?用pipx,跟以前的pip一样的,先安装pipx软件包然后pipx install即可

不行

usr@debian:~/Documents/git/ChatGLM3$ pipx install protobuf

No apps associated with package protobuf or its dependencies. If you are
attempting to install a library, pipx should not be used. Consider using pip
or a similar tool instead.
usr@debian:~/Documents/git/ChatGLM3$ 

venv

生成一个虚拟环境,能够帮助我们防止和 linux 内置的 python 包搞混乱

例子:

在 debian 上安装虚拟环境 venv: sudo apt install python3-venv

在 debian 上生成虚拟环境 venv: python3 -m venv project_name

example: python3 -m venv mrdoc_env。这样就可以生成一个名字叫做 mrdoc_env 的虚拟环境文件

在 debian 上进入虚拟环境 venv: source ./mrdoc_env/bin/activate

在 debian 上退出虚拟环境 venv: 执行命令:deactivate

在 venv 中安装 jupyter-notebook 的方法:

在 debian 上生成虚拟环境 venv: python3 -m venv project_name

example: python3 -m venv mrdoc_env。这样就可以生成一个名字叫做 mrdoc_env 的虚拟环境文件

在 debian 上进入虚拟环境 venv: source ./mrdoc_env/bin/activate

在虚拟环境里用 pip 安装 jupyter-notebook: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple notebook

在虚拟环境中启动 jupyter-notebook: jupyter notebookjupyter-notebook 这个命令会启动系统的 jupyter-notebook,而不是用 pip 安装的 jupyter notebook)

在 debian 上退出虚拟环境 venv: 执行命令:deactivate

miniconda

可以去清华源那下载 anaconda 或者 miniconda 的安装包。安装包的链接

用 miniconda生成新虚拟环境的命令:conda create -n myenv numpy( myenv 是生成的虚拟环境名称, numpy 是要安装的包)

用 miniconda 列出当前所有创建的环境命令:conda env list

进入虚拟环境的命令:conda activate myenv

退出虚拟环境的命令:conda deactivate

在虚拟环境中安装包的命令:pip install scipy

在虚拟环境中安装指定版本的包:conda install numpy==1.14.5

1 个赞

我安装过了,但是每次输入 conda 都反馈 bash: conda: 未找到命令
然后 whereis conda也找不到。

你的 shell 是 bash 的话,用下面这个方法

安装 miniconda 后,在终端直接输入 conda 会报命令没找到的错误。在终端输入 bash 就可以进入到 miniconda 的 base 虚拟环境,接着退出虚拟环境,然后就可以用 conda 命令了。

进入到 base 虚拟环境后,在终端输入 conda config就可以生成 .condarc 文件,然后按照清华源的anaconda镜像使用帮助修改 .condarc 文件,就可以进行换源。

运行 conda clean -i 清除索引缓存,保证用的是镜像站提供的缓存。

安装 miniconda 后,每次在 Linux 上打开 bash 都会自动进入到 base 的虚拟环境,如果想把这个关掉,可以执行这个命令来关掉:conda config --set auto_activate_base false,然后重启终端就可以关掉。

再不行,就用第一种方法: venv

感谢

如果你打算用 conda,那么 2024 年请使用 mamba,软件源使用 conda-forge。

miniconda 的默认求解器非常慢,极端情况下半小时都算不出来一个结果,特别是混用 anaconda 和 conda-forge 的时候(不要这么做!)。

mamba 使用 cpp 重写了求解器和其它组件,一般有以下两个推荐使用:

  • micromamba,单二进制可执行文件,配置简单方便,不附带基础的 python 环境。安装只需要
  • miniforge,是 mamba 但是默认配置为使用 conda-forge 且严格模式。

二者都兼容 ~/.condarc。都有全平台支持。

个人喜欢 micromamba,体积小无额外依赖,只需要写个 .condarc,shell 配置里初始化 micromamba 即可。

2 个赞