Conda 不断尝试安装所有可选依赖项?

Conda keeps trying to install all optional dependencies?

安装 Theano anaconda 时会自动尝试安装 pygpu,尽管这是一个可选的依赖项。我已经从我的 windows 用户目录中删除了 .theanorc 文件。

此外,当 运行 我的应用程序 Theano 尝试从 GPU 加载时。怎么好像还记得?

conda install theano
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment 
C:\Users\zebco\Miniconda3\envs\py35:

The following NEW packages will be INSTALLED:

libgpuarray: 0.6.9-vc14_0
pygpu:       0.6.9-py36_0
theano:      0.9.0-py36_0

Proceed ([y]/n)?

如您所见,我只指定安装 theano,但 conda 想要安装所有内容,包括可选的依赖项。

更新:
通常,'Optional Dependency' 是矛盾的。可选的东西不是依赖项,依赖项是另一个软件依赖于功能的软件包。
如果依赖项不与包交互,除了一个未使用的原子化功能之外,一个人可能没有依赖项。作为初学者,我建议你不要走这条路。

我对Theano不是很熟悉,但是Theano可以利用系统的GPU来加速计算,我觉得pygpugpulibarray 是启用此功能的原因。这意味着它不是可选的。

我相信 pygpu 'optional' 如果您不想使用 GPU 来加速计算(只有当 GPU 足够强大以用于此时才这样做)。

上面的 --no-deps 命令允许您安装一个没有依赖项的包,但这很少是明智的,除非人们真的知道它们在做什么。作为初学者,我不建议您走这条路。 Conda 专门设计用于确保科学包易于管理,安装所有必要的东西而不会大惊小怪。 pip 是一个通用的 python 包管理器,但不是专门为科学包构建的。

如果你想安装 theano 而不安装它的依赖项,那么你有以下三个选项之一:

  1. 使用conda install theano --no-deps
  2. 使用 pip 而不是 conda 安装它,使用 pip install theano。这将安装 theano、numpy、scipy 和六个但不安装 pygpu 和 libgpuarray。
  3. 为 Theano 创建自定义 conda 构建文件。文档位于:
    https://conda.io/docs/user-guide/tasks/build-packages/index.html

原答案:

您可能已经知道这一点,但是请改用此命令:

conda install theano --no-deps

这不会安装包的依赖项。如果您已经安装了基本的依赖项,那么这应该适合您。

libgpuarraypygpu 的依赖项。使用此命令开关两者都不会安装。

能否分享您编辑的 .yaml 文件?

您假设 pygpu 是可选的取决于您使用的包管理器。

常规 Python(点)

如果您使用直接 Python 安装(使用 brew 或 Python 站点获得),那么您将使用 pip 安装 theano。这个基本来自

https://pypi.python.org/pypi/Theano/1.0.0

如果您下载文件并解压。打开setup.py,你会看到下面的行

install_requires=['numpy>=1.9.1', 'scipy>=0.14', 'six>=1.9.0'],

所以它们被设置为这个包的依赖项。这意味着当您安装 theano 时,您还将获得 numpyscipysix.

蟒蛇Python(畅达)

现在来到 Anaconda python。 Anaconda 不使用 PyPI 或 pip 使用的包格式。它使用自己的格式。如果是 Anaconda,你应该使用 conda 来安装你需要的包,而不是 pip。

Conda 的频道只是一个存储库,其中包含一些可用的包。您可以使用以下方法从任何渠道安装软件包

conda install -c <channel-name> <package-name>

默认频道为conda-forge。如果你看看那边的 theano

https://anaconda.org/conda-forge/theano/files

然后下载解压。将有一个 info/recipe/meta.yml 文件。您会在同一

中注意到以下内容
requirements:
    build:
        - ca-certificates 2017.7.27.1 0
        - certifi 2017.7.27.1 py36_0
        - ncurses 5.9 10
        - openssl 1.0.2l 0
        - python 3.6.2 0
        - readline 6.2 0
        - setuptools 36.3.0 py36_0
        - sqlite 3.13.0 1
        - tk 8.5.19 2
        - xz 5.2.3 0
        - zlib 1.2.11 0
    run:
        - python
        - setuptools
        - six >=1.9.0
        - numpy >=1.9.1
        - scipy >=0.14
        - pygpu >=0.6.5,<0.7

指定如果你想 运行 这个包那么 pygpu 也是它的依赖项。所以 conda 下载 pygpu 作为一个依赖项,你虽然是可选的(如果你使用常规 python 和 pip,这可能是正确的)