
# 如何安装第三方包，安装报错的处理方法
#### 问题现象
- ModelArts[如何安装自定义库函数]，例如"apex"。
- ModelArts训练环境安装第三方包时出现如下报错：
  ```
  xxx.whl is not a supported wheel on this platform
  ```
  
 
#### 原因分析
由于安装的文件名格式不支持，导致出现"xxx.whl is not a supported wheel on this platform"报错，具体解决方法请参见[2]。
#### 处理方法
1. **安装第三方包**
   1. pip中存在的包，使用如下代码：
      ```
      import os
      os.system('pip install xxx')
      ```
      
   
   2. pip源中不存在的包，此处以"apex"为例，请您用如下方式将安装包上传到OBS桶中。 该样例已将安装包上传至"obs://cnnorth4-test/codes/mox_benchmarks/apex-master/"中，将在启动文件中添加以下代码进行安装。
      ```
      try:
          import apex
      except Exception:
          import os
          import moxing as mox
          mox.file.copy_parallel('obs://cnnorth4-test/codes/mox_benchmarks/apex-master/', '/cache/apex-master')
          os.system('pip --default-timeout=100 install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" /cache/apex-master')
      ```
      
    
2. **安装报错**
   "xxx.whl"文件无法安装，需要您按照如下步骤排查：
   1. 当出现"xxx.whl"文件无法安装，在启动文件中添加如下代码，查看当前pip命令支持的文件名和版本。
      ```
      import pip
      print(pip.pep425tags.get_supported())
      ```
      获取到支持的文件名和版本如下：
      ```
      [('cp36', 'cp36m', 'manylinux1_x86_64'), ('cp36', 'cp36m', 'linux_x86_64'), ('cp36', 'abi3', 'manylinux1_x86_64'), ('cp36', 'abi3', 'linux_x86_64'), ('cp36', 'none', 'manylinux1_x86_64'), ('cp36', 'none', 'linux_x86_64'), ('cp35', 'abi3', 'manylinux1_x86_64'), ('cp35', 'abi3', 'linux_x86_64'), ('cp34', 'abi3', 'manylinux1_x86_64'), ('cp34', 'abi3', 'linux_x86_64'), ('cp33', 'abi3', 'manylinux1_x86_64'), ('cp33', 'abi3', 'linux_x86_64'), ('cp32', 'abi3', 'manylinux1_x86_64'), ('cp32', 'abi3', 'linux_x86_64'), ('py3', 'none', 'manylinux1_x86_64'), ('py3', 'none', 'linux_x86_64'), ('cp36', 'none', 'any'), ('cp3', 'none', 'any'), ('py36', 'none', 'any'), ('py3', 'none', 'any'), ('py35', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]
      ```
      
   
   2. 将"faiss_gpu-1.5.3-cp36-cp36m-manylinux2010_x86_64.whl"更改为"faiss_gpu-1.5.3-cp36-cp36m-manylinux1_x86_64.whl"，并安装，执行命令如下：
      ```
      import moxing as mox
      import os
      mox.file.copy('obs://wolfros-net/zp/AI/code/faiss_gpu-1.5.3-cp36-cp36m-manylinux2010_x86_64.whl','/cache/faiss_gpu-1.5.3-cp36-cp36m-manylinux1_x86_64.whl')
      os.system('pip install /cache/faiss_gpu-1.5.3-cp36-cp36m-manylinux1_x86_64.whl')
      ```
      
     
 
