anaconda 离线安装Python环境
在离线环境下,使用anaconda创建环境的时候,需要指定Python的版本,但是无法自动下载,需要手动下载Python包,然后用conda进行安装。
需求
在离线环境下,使用anaconda创建环境的时候,需要指定Python的版本,但是无法自动下载,需要手动下载Python包,然后用conda进行安装。
解决
首先下载Python包,在https://repo.anaconda.com/
中选择Anaconda Packages
。
可以看到里面有Python包也有R包还有Microsoft R Open等一些包,然后选择Python的相关包:
最终打开的页面:
也可以通过https://repo.anaconda.com/pkgs/main/linux-64/
直接打开。
有时,这个页面比较大,很难打开,无法获取文件的下载链接,可以通过
wget https://repo.anaconda.com/pkgs/main/linux-64/
来将页面下载到本地,用文本编辑器打开,然后获取到文件名,通过URL:https://repo.anaconda.com/pkgs/main/linux-64/python-3.6.13-h12debd9_1.tar.bz2
来下载。
这里我选择了python-3.6.13-h12debd9_1.tar.bz2
, 同时安装pip, pip-20.3-py36h06a4308_0.tar.bz2
- 在
~/anaconda3/envs/
目录下,新建一个空文件夹,目录名为环境名,使用conda env list
查看环境列表时并不会显示该环境名称;这里我创建一个test环境名。 - 但是可以进入新建的环境:使用
conda activate +环境名进入新环境
;
有时候提示Use 'conda create' to convert the directory to a conda environment.
这时需要通过conda create --name test --offline
来创建一个空环境 - 然后在当前环境下安装Python:
conda install python-3.6.13-h12debd9_1.tar.bz2
有时候会报错:
requests.exceptions.ConnectionError: HTTPSConnectionPool(host=‘repo.anaconda.com’, port=443): Max retries exceeded with url: /pkgs/main/notices.json (Caused by NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x7fb9a8912dc0>: Failed to establish a new connection: [Errno 101] Network is unreachable’))
可以使用命令conda install python-3.6.13-h12debd9_1.tar.bz2 --offline
来解决
4. 在新的环境中可以看到安装的Python
5. 安装pip, conda install pip-20.3-py36h06a4308_0.tar.bz2
6. 此时安装的pip位于新建环境中,输入pip --version 查看pip应位于新建环境目录下。
conda查看依赖
我们创建一个离线环境:conda create --name py3.10_test --offline
,并且切换到这个环境:source activate py3.10_test
安装python,但是我们现在不知道下载python哪个版本,也不知道对应的依赖,应该怎么办?
解决办法:
使用conda install --download-only python==3.10
,可以下载python3.10版本。
可以将所需要下载的依赖包,保存到requirements.txt文件中 conda install --download-only --no-deps --file ./requirements.txt;
控制台输出如下:
上面列出了python 3.10
所依赖的包。依次在https://repo.anaconda.com/pkgs/main/linux-aarch64/
下载即可。
将下载的文件拷贝到离线环境中,执行命令:conda install --offline ./*.tar.bz2
可以安装所有的依赖。
使用environment.yml方式
- 首先创建
environment.yml
:
name: py3.12_fastapi
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
- https://repo.anaconda.com/pkgs/main
- https://repo.anaconda.com/pkgs/r
dependencies:
- python=3.12.0
- pip=25.0
- requests=2.32.4
- fastapi
- uvicorn
- elasticsearch=7.13.3
- pytest=8.4.1
- tqdm=4.67.1
- 创建临时conda 安装目录
export CONDA_PKGS_DIRS=/home/vincent/code/conda_env/my_py3.12_fastapi/
,这个目录用于存放环境的安装路径。 - 通过
conda info
可以查看到package cache
存放位置。 - 安装环境:
conda env create -n my_py3.12_fastapi -f environment.yml
(如果不适用-n py3.12_fastapi则会使用environment.yml中的name) - 会自动将离线包下载到
/home/vincent/code/conda_env/my_py3.12_fastapi/
中。 - 构建channel:
mkdir -p /home/vincent/code/conda_env/my_py3.12_fastapi/linux-64
mkdir -p /home/vincent/code/conda_env/my_py3.12_fastapi/noarch
- 移动包文件到正确位置:
# 移动 Linux 平台的包
mv /home/vincent/code/conda_env/my_py3.12_fastapi/*.tar.bz2 /home/vincent/code/conda_env/my_py3.12_fastapi/linux-64/ 2>/dev/null || true
mv /home/vincent/code/conda_env/my_py3.12_fastapi/*.conda /home/vincent/code/conda_env/my_py3.12_fastapi/linux-64/ 2>/dev/null || true
# 移动平台无关的包
mv /home/vincent/code/conda_env/my_py3.12_fastapi/*.json /home/vincent/code/conda_env/my_py3.12_fastapi/noarch/ 2>/dev/null || true
- 将包缓存组织为conda channel结构:
conda index /home/vincent/code/conda_env/my_py3.12_fastapi/
- 验证目录结构:
/home/vincent/code/conda_env/my_py3.12_fastapi/
├── linux-64/
│ ├── package1.tar.bz2
│ ├── package2.conda
│ └── repodata.json
└── noarch/
└── repodata.json
- 将目录压缩,并迁移到新的离线环境中。
- 在新的环境中查看conda的channel:
(base) iie4bu@iie4bu-virtual-machine:~/code/conda_env$ conda config --show channels
channels:
- https://repo.anaconda.com/pkgs/main
- https://repo.anaconda.com/pkgs/r
可以看到有两个channels
,我们需要将其删除,然后添加我们本地的channel。(同时也需要删除~/anaconda3/.condarc)
conda config --remove channels https://repo.anaconda.com/pkgs/main
conda config --remove channels https://repo.anaconda.com/pkgs/r
# 启用离线模式
conda config --set offline true
conda config --add channels file:///home/vincent/code/conda_env/my_py3.12_fastapi/
查看channel:cat ~/.condarc
输出如下:
channels:
- file:///home/vincent/code/conda_env/my_py3.12_fastapi/
offline: true
- 在离线环境中修改
environment.yml
:
name: my_env
channels:
# 添加本地channel
- file:///home/vincent/code/conda_env/my_py3.12_fastapi/
- local
dependencies:
- python=3.12
- fastapi
- 创建环境
conda env create -f environment.yml --offline
- 如果后续要往这个channel添加依赖,则直接把依赖包拷贝到
linux-64
文件夹内,然后重新在/home/vincent/code/conda_env/my_py3.12_fastapi/
执行conda index .
就会更新。 - 如果后续
environment.yml
文件发生了变化,例如新增了依赖,或者删除了某些依赖,可以在my_env
conda环境下执行更新:conda env update -f environment.yml

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)