
# 在ModelArts上如何创建引用第三方依赖包的训练作业？
ModelArts支持训练模型过程中安装第三方依赖包。在训练代码目录下放置"pip-requirements.txt"文件后，在训练启动文件被执行前系统会执行如下命令，以安装用户指定的Python Packages。
```
pip install -r pip-requirements.txt
```
仅使用**预置框架**创建的训练作业支持在训练模型时引用依赖包。
![](https://support.huaweicloud.com/modelarts_faq/public_sys-resources/note_3.0-zh-cn.png)
pip-requirements.txt文件命名支持以下4种格式，文档中以pip-requirements为例说明。
- pip-requirement.txt
- pip-requirements.txt
- requirement.txt
- requirements.txt
 
- 代码目录位置请参考[在代码目录下提供安装文件]。
- pip-requirements文件写法请参考[安装文件规范]。
 #### 在代码目录下提供安装文件
- 如果使用"我的算法"创建训练作业，则在创建算法时，可以把相关文件放置在配置的"代码目录"下，算法的"启动方式"必须选择"预置框架"。
- 如果使用"自定义算法"创建训练作业，则可以把相关文件放置在配置的"代码目录"下，"启动方式"必须选择"预置框架"。
需要在创建训练作业前将相关文件上传至OBS路径下，文件打包要求请参见[安装文件规范]。
 #### 安装文件规范
请根据依赖包的类型，在代码目录下放置对应文件：
- **依赖包为开源安装包时**
  ![](https://support.huaweicloud.com/modelarts_faq/public_sys-resources/note_3.0-zh-cn.png)
  暂时不支持直接从github的源码中安装。
  在"代码目录"中创建一个命名为"pip-requirements.txt"的文件，并且在文件中写明依赖包的包名及其版本号，格式为"包名==版本号"。
  例如，"代码目录"对应的OBS路径下，包含模型文件，同时还存在"pip-requirements.txt"文件。"代码目录"的结构如下所示：
  ```
  |---模型启动文件所在OBS文件夹
       |---model.py               #模型启动文件。
       |---pip-requirements.txt   #定义的配置文件，用于指定依赖包的包名及版本号。
  ```
  "pip-requirements.txt"文件内容如下所示：
  ```
  alembic==0.8.6
  bleach==1.4.3
  click==6.6
  ```
  
- **依赖包为whl包时**
  如果训练后台不支持下载开源安装包或者使用用户编译的whl包时，由于系统无法自动下载并安装，因此需要在"代码目录"放置此whl包，同时创建一个命名为"pip-requirements.txt"的文件，并且在文件中指定此whl包的包名。依赖包必须为".whl"格式的文件。
  例如，"代码目录"对应的OBS路径下，包含模型文件、whl包，同时还存在"pip-requirements.txt"文件。"代码目录"的结构如下所示：
  ```
  |---模型启动文件所在OBS文件夹
       |---model.py               #模型启动文件。
       |---XXX.whl                #依赖包。依赖多个时，此处放置多个。
       |---pip-requirements.txt   #定义的配置文件，用于指定依赖包的包名。
  ```
  "pip-requirements.txt"文件内容如下所示：
  ```
  numpy-1.15.4-cp36-cp36m-manylinux1_x86_64.whl
  tensorflow-1.8.0-cp36-cp36m-manylinux1_x86_64.whl
  ```
  
 
