首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在x8664体系结构的aarch64中安装conda软件包

如何在x8664体系结构的aarch64中安装conda软件包
EN

Stack Overflow用户
提问于 2022-08-10 06:19:32
回答 1查看 424关注 0票数 0

我可以知道如何从x86-64体系结构 linux和特定环境中获得已安装的包。

如何使用相同的包在aarch64体系结构中创建新的conda环境?

首先,在名为L2的x8664体系结构linux机器中,我导出了包。

代码语言:javascript
复制
conda list --export > envconda.txt

当我打开envconda.txt时,

代码语言:javascript
复制
# 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-aarch64,因为我将在aarch64体系结构中安装软件包。

代码语言:javascript
复制
# 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

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

代码语言:javascript
复制
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体系结构中解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-10 16:31:34

由于多种原因,这种做法不太可能奏效:

  1. 软件包对主要平台(osx-64linux-64win-64)的支持是稀疏的,特别是更早的时候。一个具体的例子是linux-aarch64,它只有从版本11.
  2. Overgeneralized环境开始的cudatoolkit构建。环境中包含的包越多,解决它就越困难,跨平台解决使这个问题更加严重。例如,我会完全移除任何与木星相关的包裹。在未来,尝试提前计划为特定项目创建专用环境,并且只安装绝对是required.
  3. Some包的包是完全不兼容的。例如,mkl是特定于体系结构的.

然而,如果您想尝试重新创建环境的近似,有一些选项。首先,我们不能用conda list --export来实现这一点--它根本不处理安装了来自PyPI的包的环境。

以PyPI为中心的方法

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

代码语言:javascript
复制
pip list --format=freeze > requirements.txt

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

environment.yaml

代码语言:javascript
复制
name: foo
channels:
  - conda-forge
  - nodefaults
dependencies:
  - python=3.6
  - pip
  - pip:
    - -r requirements.txt

在同一个文件夹中使用requirements.txtenvironment.yaml创建环境

代码语言:javascript
复制
## "foo" is arbitrary - pick something descriptive
conda env create -n foo -f environment.yaml

保留一些Conda软件包

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

代码语言:javascript
复制
conda env export --from-history > environment.yaml

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

environment.yaml

代码语言:javascript
复制
#...
dependencies:
  - python=3.6
  # ...
  - pip
  - pip:
    - -r requirements.txt

然后与以下内容一起使用:

代码语言:javascript
复制
conda env create -n foo -f environment.yaml

期望迭代几次,以发现平台无法找到的内容。我强烈建议使用mamba而不是Conda来减少这个解决时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73301507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档