Conda一直在尝试安装所有可选的依赖项?

Pri*_*ign 6 python-3.x theano anaconda theano-cuda

安装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)?
Run Code Online (Sandbox Code Playgroud)

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

kch*_*-pi 5

更新:
通常,“可选依赖项”是一个矛盾的说法。可选的东西不是依赖项,依赖项是另一个软件依赖于功能来运行的软件包。
如果依赖项不与包交互(除了一项未使用的原子化功能之外),则可以在没有依赖项的情况下完成。作为一个初学者,我建议你不要走这条路。

我对 Theano 不是很熟悉,但 Theano 可以使用系统的 GPU 来加速其计算,在我看来pygpugpulibarray是启用此功能的。这意味着它不是可选的。

我相信,如果您不希望使用 GPU 来加速计算,则 pygpu 是“可选的”(只有在 GPU 足够强大且对此有用时才可以这样做)。

上面的--no-deps命令允许您安装一个没有依赖项的软件包,但这很少是明智的,除非人们真正知道他们在做什么。作为初学者,我不建议您走这条路。Conda 专门设计用于确保轻松管理科学包并安装所有必需的内容,而不会出现任何麻烦或混乱。pip 是一个通用的 python 包管理器,但并不是专门为科学包构建的。

如果您希望安装 theano 而不安装其依赖项,那么您有以下三个选项之一:

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

原答案:

您可能已经知道这一点,但是请使用以下命令:

conda install theano --no-deps

这不会安装包的依赖项。如果您已经安装了必要的依赖项(看起来),那么这应该适合您。

libgpuarray是 的依赖项pygpu。使用此命令开关,两者都不会安装。

可以分享一下.yaml你编辑的文件吗?


Tar*_*ani 4

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

常规 Python (pip)

如果您使用直接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'],
Run Code Online (Sandbox Code Playgroud)

因此它们被设置为该包的依赖项。这意味着安装时theano您还将获得numpy,scipysix

蟒蛇(conda)

现在来谈谈 Anaconda python。Anaconda 不使用 PyPI 或 pip 使用的包格式。它使用自己的格式。如果是 Anaconda,您应该使用conda安装所需的软件包而不是 pip。

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

conda install -c <channel-name> <package-name>
Run Code Online (Sandbox Code Playgroud)

默认频道是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
Run Code Online (Sandbox Code Playgroud)

它指定如果您想运行此包,那么pygpu也是它的依赖项。因此 conda 下载pygpu为依赖项,您认为这是可选的(如果您使用常规 python 和 pip,这可能是正确的)