Conda 跨平台迁移环境时出现错误

初次使用 Anaconda 或 Miniconda 将本地 Conda 环境(Windows 10)迁移到线上服务器(Ubuntu 20.04)时会出现一些常见错误,本文简要记录。

迁移前建议本地与线上的 Conda 版本一致。本地先导出当前环境:

conda env export > environment.yml

线上重建环境使用命令:

conda env create -f environment.yaml

出现错误如下:

1、第一种,看提示 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte ,貌似是编码错误。只需将 environment.yml 文件另存为 UTF-8 编码即可,不用像网上教程说的修改 conda 的 Python 代码或设置 bash 编码。

(base) [root@wbt5 ~]# conda env create -f environment.yml 

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/root/miniconda3/lib/python3.8/site-packages/conda/exceptions.py", line 1079, in __call__
        return func(*args, **kwargs)
      File "/root/miniconda3/lib/python3.8/site-packages/conda_env/cli/main.py", line 80, in do_call
        exit_code = getattr(module, func_name)(args, parser)
      File "/root/miniconda3/lib/python3.8/site-packages/conda_env/cli/main_create.py", line 86, in execute
        spec = specs.detect(name=name, filename=filename, directory=os.getcwd())
      File "/root/miniconda3/lib/python3.8/site-packages/conda_env/specs/__init__.py", line 43, in detect
        if spec.can_handle():
      File "/root/miniconda3/lib/python3.8/site-packages/conda_env/specs/yaml_file.py", line 18, in can_handle
        self._environment = env.from_file(self.filename)
      File "/root/miniconda3/lib/python3.8/site-packages/conda_env/env.py", line 156, in from_file
        yamlstr = fp.read()
      File "/root/miniconda3/lib/python3.8/codecs.py", line 322, in decode
        (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

`$ /root/miniconda3/bin/conda-env create -f environment.yml`

  environment variables:
                 CIO_TEST=<not set>
  CONDA_AUTO_UPDATE_CONDA=false
        CONDA_DEFAULT_ENV=base
                CONDA_EXE=/root/miniconda3/bin/conda
             CONDA_PREFIX=/root/miniconda3
    CONDA_PROMPT_MODIFIER=(base)
         CONDA_PYTHON_EXE=/root/miniconda3/bin/python
               CONDA_ROOT=/root/miniconda3
              CONDA_SHLVL=1
           CURL_CA_BUNDLE=<not set>
                     PATH=/root/miniconda3/bin:/root/miniconda3/bin:/root/miniconda3/condabin:/u
                          sr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>

     active environment : base
    active env location : /root/miniconda3
            shell level : 1
       user config file : /root/.condarc
 populated config files : 
          conda version : 4.8.5
    conda-build version : not installed
         python version : 3.8.3.final.0
       virtual packages : __glibc=2.28
       base environment : /root/miniconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /root/miniconda3/pkgs
                          /root/.conda/pkgs
       envs directories : /root/miniconda3/envs
                          /root/.conda/envs
               platform : linux-64
             user-agent : conda/4.8.5 requests/2.24.0 CPython/3.8.3 Linux/4.18.0-80.7.1.el8_0.x86_64 centos/8.0.1905 glibc/2.28
                UID:GID : 0:0
             netrc file : None
           offline mode : False


An unexpected error has occurred. Conda has prepared the above report.

If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers?

2、第二种是出现 ResolvePackageNotFound 错误,大量的包会无法安装。这种情况下可在导出包时添加 --no-builds 参数,将依赖中的构建规范去掉,即:conda env export --no-builds > environment.yml 不过要注意的是,这样依然会有一些软件包无法安装,因为它们不是跨平台仅在 Windows 下可用,比如:vc=14.1、wincertstore=0.2、pywin32=227、vs2015_runtime=14.16.27012 等,只需在 environment.yml 文件中删除对应行即可。

3、第三种错误是 CondaHTTPError: HTTP 000 CONNECTION FAILED for url 这一般是因为本地 environment.yml 中添加了其他镜像源,而线上环境又无法访问该源,可尝试只保留 default 或更换其他源。

» 链接地址:https://wbt5.com/conda-error.html »英雄不问来路,转载请注明出处。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注