8

我正在尝试在 azure ACI 中部署机器学习模型,但在创建 docker 映像时出现以下错误

Pip subprocess error:
ERROR: Cannot uninstall 'ruamel-yaml'. It is a distutils installed project and thus we cannot 
accurately determine which files belong to it which would lead to only a partial uninstall.

下面是我的 pip 依赖项的 yml 文件

name: project_environment
dependencies:
# The python interpreter version.

# Currently Azure ML only supports 3.5.2 and later.


- pip:
  # Required packages for AzureML execution, history, and data preparation.
  - pandas
  - azureml-defaults
  - azureml-sdk
  - azureml-widgets
  - numpy
  - tensorflow-gpu
  - keras
  - azureml-defaults
  - torch==1.4.0
  - scikit-learn==0.22.2.post1

如果我使用 conda 而不是 pip 那么我会收到以下错误

Step 11/13 : RUN CONDA_ROOT_DIR=$(conda info --root) && if [ -n 
"$AZUREML_CONDA_ENVIRONMENT_PATH" ]; then conda env update -p 
"$AZUREML_CONDA_ENVIRONMENT_PATH" -f '/var/azureml-app/binary_2.yml'; else 
conda env update -n base -f '/var/azureml-app/binary_2.yml'; fi && conda 
clean -aqy && rm -rf /root/.cache/pip && rm -rf "$CONDA_ROOT_DIR/pkgs" && 
find "$CONDA_ROOT_DIR" -type d -name __pycache__ -exec rm -rf {} +
---> Running in 9e6eb7278bfc  
[91mUnable to install package for Conda.

Please double check and ensure you dependencies file has
the correct spelling.  You might also try installing the
conda-env-Conda package to see if provides the required
installer. 
[0mThe command '/bin/sh -c CONDA_ROOT_DIR=$(conda info --root) && if [ -n 
"$AZUREML_CONDA_ENVIRONMENT_PATH" ]; then conda env update -p 
"$AZUREML_CONDA_ENVIRONMENT_PATH" -f '/var/azureml-app/binary_2.yml'; else 
 conda env update -n base -f '/var/azureml-app/binary_2.yml'; fi && conda 
clean 
-aqy && rm -rf /root/.cache/pip && rm -rf "$CONDA_ROOT_DIR/pkgs" && find 
"$CONDA_ROOT_DIR" -type d -name __pycache__ -exec rm -rf {} +' returned a 
non- 
 zero code: 255
 2020/08/12 19:36:09 Container failed during run: acb_step_0. No retries 
 remaining.
 failed to run step ID: acb_step_0: exit status 255

**谁能帮帮我吗 **

4

3 回答 3

13

这是自 pip 版本 10 以来的一个问题(有关 pip repo 的讨论)。该线程详细介绍了一些解决方案:

手动删除site-packages. 就我而言,删除ruamel.yaml命令是rm -rf /path/to/anaconda3/lib/python3.7/site-packages/ruamel*

您还可以将 pip 降级到版本 <10,使用选项重新安装 ruamel --disable-pip-version-check,然后使用pip install --upgrade pip.

更新:这是一个删除 ruamel 包的 1-liner:

rm -rf $(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")/ruamel*

打破这一点: $(...) 中的所有内容都是获取全局站点包目录( source )的单行代码。递归删除ruamelrm -rf包目录。/ruamel*后缀针对 ruamel 包。

我在其他包(boto, gmpy2, pycosat)中遇到了同样的问题,解决方案是相同的,除了替换后缀。

于 2020-08-26T00:42:25.777 回答
4

也许使用“pip install --ignore-installed [package]”

于 2020-12-13T11:45:53.603 回答
0

我正在使用miniconda3安装并且遇到了同样的问题。按照 crypdick 的回答,我必须在 Powershell 中使用 conda 执行以下操作:

# List outdated packages
pip list -o

# Try to update with:
pip install -U ruamel-yaml
# get error-1
...

# try to uninstall with conda: 
conda update ruamel-yaml

# get error-2
# PackageNotInstalledError: Package is not installed in prefix.
#   prefix: C:\Users\<user>\miniconda3
#   package name: ruamel-yaml

# Remove index cache, lock files, unused cache packages, and tarballs.
conda clean -a -vv
conda deactivate

# Remove any files related to "ruamel-yaml":
# WARNING: Recursive removal, so don't fuck this up!
cd $env:CONDA_PREFIX
gci -r -fi "ruamel*" | ForEach-Object { rm -Recurse -Force $_.FullName }

# From now on, "conda" will not work until we re-install:
# Make sure your pip version & path is correct.
pip -V 
pip install ruamel_yaml

现在 conda 再次工作!

于 2020-09-25T18:01:12.050 回答