为什么我不能使用 pip 安装 cudatookkit=10.1 但可以使用 conda?

Why can't I install cudatookkit=10.1 using pip but can using conda?

$ pip install cudatoolkit==10.1
Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement cudatoolkit==10.1 (from versions: none)
ERROR: No matching distribution found for cudatoolkit==10.1

这失败了。但是,conda 有效:

$ conda install cudatoolkit=10.1
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /data0/congmin/miniconda

  added / updated specs:
    - cudatoolkit=10.1


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ca-certificates-2021.5.25  |       h06a4308_1         112 KB
    certifi-2021.5.30          |   py38h06a4308_0         138 KB
    conda-4.10.1               |   py38h06a4308_1         2.9 MB
    cudatoolkit-10.1.243       |       h6bb024c_0       347.4 MB
    openssl-1.1.1k             |       h27cfd23_0         2.5 MB
    ------------------------------------------------------------
                                           Total:       353.1 MB

我需要用pip安装,因为我想把它放在requirements.txt.

pip 依赖 https://pypi.org/ 作为默认包存储库。

Anaconda 有自己的存储库

cudatoolkit 不是 pypi 中的包。所以 pip 找不到任何这样的包。

它在 conda 存储库中可用。

cudatoolkit 在 pypi 中不可用的原因是因为它不是 python 包。它是来自 nvidia 的工具包,需要 C 编译器才能存在于您的系统中。 Pip 从来没有打算处理这种情况,而 Anaconda 是。

查看此blog post from Anaconda了解详情:

This highlights a key difference between conda and pip. Pip installs Python packages whereas conda installs packages which may contain software written in any language.

就添加到 requirements.txt 而言。如果您也在目标系统中使用 conda,您可以将您的 conda 环境导出到一个 environment.yml 文件,然后在您的目标机器中克隆该环境。