使用 python 源码搭建 conda 环境

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

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

./configure -h

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

./configure --prefix /xxx/xxx/268
make
conda create -n py268 --offline

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

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: []

猜你喜欢

转载自blog.csdn.net/niuzhucedenglu/article/details/132536804