繁体   English   中英

如何在 x86-64 架构的 aarch64 中安装 conda 包

[英]How to install conda packages in the aarch64 from x86-64 architecture

我可以知道如何从x86-64 架构linux 和

如何使用相同的 package 在aarch64 架构中创建新的 conda 环境?

先在x86-64架构linux机器叫L2,我出口的是package

conda list --export > envconda.txt

当我打开 envconda.txt 时,它是

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64
_libgcc_mutex=0.1=main
_r-mutex=1.0.0=anacondar_1

我将平台:linux-64 更改为 linux-aarch64,因为我要在 aarch64 架构中安装软件包。

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-aarch64
_libgcc_mutex=0.1=main
_r-mutex=1.0.0=anacondar_1

在名为L1的aarch64 linux机器上,我创建了一个conda环境conda create -n envtest --file envconda.txt

Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - setuptools==36.4.0=py36_1
  - kiwisolver==1.1.0=pypi_0
  - pyyaml==3.13=pypi_0
  - jedi==0.10.2=py36_2
  - libgcc==5.2.0=0
  - jsonschema==2.6.0=py36_0
  - ptyprocess==0.5.2=py36_0
  - prompt_toolkit==1.0.15=py36_0
  - libstdcxx-ng==9.1.0=hdf63c60_0
  - tqdm==4.36.1=pypi_0
  - tomli==1.2.3=pypi_0
  - astor==0.7.1=pypi_0
  - argparse==1.4.0=pypi_0
  - pycparser==2.19=pypi_0
  - testpath==0.3.1=py36_0
  - cudnn==7.6.5=cuda10.2_0
  - asn1crypto==0.22.0=py36_0
  - dataclasses==0.8=pypi_0
  - platformdirs==2.4.0=pypi_0
  - krbcontext==0.10=pypi_07
  - decorator==4.1.2=py36_0
  - lazy-object-proxy==1.7.1=pypi_0
  - gsl==2.2.1=0
  - pexpect==4.2.1=py36_0
  - icu==54.1=0
  - freetype==2.5.5=2
  - bleach==1.5.0=py36_0
  - matplotlib==3.1.1=pypi_0
  - wheel==0.29.0=py36_0
  - cudatoolkit==10.2.89=hfd86e86_1
  - glib==2.50.2=1
  - kneed==0.7.0=pypi_0
  - sqlite==3.13.0=0
  - importlib-metadata==1.7.0=pypi_0
  - python==3.6.2=0
  - jpeg==9b=0
  - pango==1.40.3=1
  - fontconfig==2.12.1=3
  - resampy==0.2.2=pypi_0
  - nbformat==4.4.0=py36_0
  - pixman==0.34.0=0
  - scikit-learn==0.21.3=pypi_0
  - termcolor==1.1.0=pypi_0
  - typed-ast==1.5.4=pypi_0
  - keras-applications==1.0.8=pypi_0
  - harfbuzz==0.9.39=2
  - libffi==3.2.1=1
  - jupyter_client==5.1.0=py36_0
  - gssapi==1.6.9=pypi_0
  - curl==7.54.1=0
  - keras==2.2.4=pypi_0
  - isort==5.10.1=pypi_0
  - simplegeneric==0.8.1=py36_1
  - joblib==0.14.0=pypi_0
  - pypandoc==1.6.3=pypi_0
  - python-dateutil==2.8.2=pypi_0
  - ipython_genutils==0.2.0=py36_0
  - pyparsing==2.4.2=pypi_0
  - ca-certificates==2022.6.15=ha878542_0
  - krb5==1.13.2=0
  - path.py==10.3.1=py36_0
  - markdown==3.0.1=pypi_0
  - requests-kerberos==0.12.0=pypi_0
  - hdfs==2.5.8=pypi_0
  - traitlets==4.3.2=py36_0
  - tornado==4.5.2=py36_0
  - librosa==0.7.0=pypi_0
  - pyasn1==0.4.8=pypi_0
  - blas==1.0=mkl
  - zlib==1.2.11=0
  - libogg==1.3.2=h14c3975_1001
  - mkl==2017.0.3=0
  - terminado==0.6=py36_0
  - libflac==1.3.1=hf484d3e_1002
  - python-levenshtein==0.12.2=pypi_0
  - werkzeug==0.14.1=pypi_0
  - pyspark==2.3.2=pypi_0
  - urllib3==1.26.9=pypi_0
  - bzip2==1.0.6=3
  - html5lib==0.9999999=py36_0
  - pywavelets==1.1.1=pypi_0
  - zeromq==4.1.5=0
  - pykerberos==1.2.1=pypi_0

Current channels:

  - https://repo.anaconda.com/pkgs/main/linux-aarch64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/r/linux-aarch64
  - https://repo.anaconda.com/pkgs/r/noarch
  - https://conda.anaconda.org/conda-forge/linux-aarch64
  - https://conda.anaconda.org/conda-forge/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.

我可以知道如何在 aarch64 架构中成功安装软件包吗?

最后但同样重要的是,当我使用pip install numpy时,我收到此错误Illegal instruction (core dumped)

对于这个问题,我可以知道如何在 linux aarch64 架构中解决这个问题吗?

由于多种原因,这不太可能起作用:

  1. Package 对主要平台( osx-64linux-64win-64 )的支持很少,尤其是更早的时间。 一个具体的例子是cudatoolkit ,它只有从版本 11 开始的linux-aarch64构建。
  2. 过于笼统的环境。 环境中包含的包越多,解决它就越困难,而跨平台解决则加剧了这个问题。 例如,我会完全删除任何与 Jupyter 相关的包。 将来,请尝试提前计划为特定项目提供专用环境,并且只安装绝对需要的包。
  3. 有些软件包完全不兼容。 例如mkl是特定于架构的。

不过,如果您想尝试重新创建环境的近似值,则有一些选择。 首先,使用conda list --export无法实现这一点——它根本不处理安装了 PyPI 包的环境。

以 PyPI 为中心的方法

因为大部分环境来自 PyPI,所以我的第一个倾向是建议放弃 Conda 组件并采用pip路线。 也就是说,使用

pip list --format=freeze > requirements.txt

捕获 Python 包,然后创建一个新环境,如下所示:

环境.yaml

name: foo
channels:
  - conda-forge
  - nodefaults
dependencies:
  - python=3.6
  - pip
  - pip:
    - -r requirements.txt

保留一些 Conda 包

您还可以尝试通过将 conda conda env export和之前的pip list混合在一起来保留 Conda 的某些部分。 具体来说,导出一个最小的环境定义,使用

conda env export --from-history > environment.yaml

编辑此文件以包含特定版本的 Python,删除所有不适用于linux-aarch64 的包(如mkl ),并添加pip:部分,如上:

环境.yaml

#...
dependencies:
  - python=3.6
  # ...
  - pip
  - pip:
    - -r requirements.txt

然后将其用于:

conda env create -n foo -f environment.yaml

期望迭代几次以发现平台无法找到的内容。 我强烈建议使用mamba而不是 Conda,以最大限度地减少求解时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM