使用 python 源码搭建 conda 环境

复制代码
今天需要使用 python 2.6.8 的环境,发现 conda 设置成清华源后,没有旧版本了。所以打算从官网上下载一份 python 进行安装,
结果发现,conda 不能直接安装离线包(也可能我没找到方法),经过一番尝试终于解决了,这里记录一下。

下载并解压后,在源码目录执行

bash 复制代码
./configure -h

可以看到一堆配置参数,大部份我们都不需要关心。为了避免新编译的 python 污染系统已有的环境变量,这里只需要设置 --prefix 参数(即编译出的 python 存放位置,注意:这个参数需要绝对路径,我是在当前目录下新建了一个文件夹:268)。了解了这些依次执行下面的命令即可:

bash 复制代码
./configure --prefix /xxx/xxx/268
make
conda create -n py268 --offline

执行完上面的命令,会在 268 文件夹下生成 python 程序及创建一个 conda 的 py268 环境,但是现在的 py268 还是走的系统默认的 python 环境,需要把 268 文件夹下的内容复制到 conda 的 xxx/envs/py268 文件夹下,然后执行下面的命令安装 py268 的 pip:

bash 复制代码
conda activate py268
python -m ensurepip --upgrade

然后重启命令行,在 py268 环境下使用 pip 就是 py268 自己的 pip 了,而不是使用默认的。

另外,安装好后,我发现 anaconda 的环境中还有历史版本(可以通过 conda search python 查看),所以把 anaconda 的配置文件(通过 conda config --show 获得的)也一并贴在这里,主要是里面的 channels 配置。

conda config:

复制代码
add_anaconda_token: True
add_pip_as_python_dependency: True
aggressive_update_packages:
  - ca-certificates
  - certifi
  - openssl
allow_conda_downgrades: False
allow_cycles: True
allow_non_channel_urls: False
allow_softlinks: False
always_copy: False
always_softlink: False
always_yes: None
anaconda_upload: None
auto_activate_base: True
auto_stack: 0
auto_update_conda: True
bld_path: 
changeps1: True
channel_alias: https://conda.anaconda.org
channel_priority: flexible
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - defaults
client_ssl_cert: None
client_ssl_cert_key: None
clobber: False
conda_build: {}
create_default_packages: []
croot: /home/xxx/anaconda3/conda-bld
custom_channels:
  pkgs/main: https://repo.anaconda.com
  pkgs/r: https://repo.anaconda.com
  pkgs/pro: https://repo.anaconda.com
custom_multichannels:
  defaults: 
    - https://repo.anaconda.com/pkgs/main
    - https://repo.anaconda.com/pkgs/r
  local: 
debug: False
default_channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
default_python: 3.8
default_threads: None
deps_modifier: not_set
dev: False
disallowed_packages: []
download_only: False
dry_run: False
enable_private_envs: False
env_prompt: ({default_env}) 
envs_dirs:
  - /home/xxx/anaconda3/envs
  - /home/xxx/.conda/envs
error_upload_url: https://conda.io/conda-post/unexpected-error
execute_threads: 1
extra_safety_checks: False
force: False
force_32bit: False
force_reinstall: False
force_remove: False
ignore_pinned: False
json: False
local_repodata_ttl: 1
migrated_channel_aliases: []
migrated_custom_channels: {}
non_admin_enabled: True
notify_outdated_conda: True
offline: False
override_channels_enabled: True
path_coxxxict: clobber
pinned_packages: []
pip_interop_enabled: False
pkgs_dirs:
  - /home/xxx/anaconda3/pkgs
  - /home/xxx/.conda/pkgs
proxy_servers: {}
quiet: False
remote_backoff_factor: 1
remote_connect_timeout_secs: 9.15
remote_max_retries: 3
remote_read_timeout_secs: 60.0
repodata_fns:
  - current_repodata.json
  - repodata.json
repodata_threads: None
report_errors: None
restore_free_channel: False
rollback_enabled: True
root_prefix: /home/xxx/anaconda3
safety_checks: warn
sat_solver: pycosat
separate_format_cache: False
shortcuts: True
show_channel_urls: True
signing_metadata_url_base: https://repo.anaconda.com/pkgs/main
solver_ignore_timestamps: False
ssl_verify: True
subdir: linux-64
subdirs:
  - linux-64
  - noarch
target_prefix_override: 
track_features: []
unsatisfiable_hints: True
unsatisfiable_hints_check_depth: 2
update_modifier: update_specs
use_index_cache: False
use_local: False
use_only_tar_bz2: False
verbosity: 0
verify_threads: 1
whitelist_channels: []
相关推荐
一次旅行8 分钟前
act本地预跑GitHub Actions:Python项目完整CI/CD流水线实战
python·ci/cd·github
玉鸯17 分钟前
RAG 全链路调优指南:从 Chunking 到 Reranker
python·llm·agent
圣光SG30 分钟前
Java操作题练习(二)
java·开发语言·python
m0_6174939431 分钟前
Python OpenCV 分水岭算法(Watershed)详解与实战
python·opencv·算法
Sammyyyyy32 分钟前
如何利用本地技术栈构建 0 成本 AI SaaS 雏形
开发语言·人工智能·python·ai·servbay
AAIshangyanxiu36 分钟前
Python 机器学习与深度学习气象水文海洋全域应用技术体系:地学时空数据 AI 建模、数值模式后处理、气象海洋水文智能预测与数据处理
人工智能·python·机器学习·水文气象·气象预测·气象海洋
中微极客43 分钟前
边缘AI实战:TinyML模型量化与部署全解析(TensorFlow 2.18.0 + ESP32)
人工智能·python·tensorflow
Zane19941 小时前
可变对象 vs 不可变对象:为什么"可变默认参数"是 Python 最经典的坑?
后端·python
cts6181 小时前
Python全栈claude.md文档
开发语言·python
名字还没想好☜1 小时前
Spring @Async 不生效排查:自调用失效、默认线程池坑与异步方法里的异常去哪了
java·python·spring·异步