2

这种改变 conda 环境的绝妙方法会在以后破坏某些东西吗?

所以我没有耐心阅读和消化所有关于不断变化的 conda 环境的胡言乱语。(我什至不确定我对“环境”一词的使用是否正确)。

我试图安装 py2exe (pip install py2exe),但出现错误,在回溯中我注意到 pip 正在使用位于 E:\Anaconda 的旧 2.7 anaconda python。我的“新”或当前 3.4 anaconda python 位于 E:\Anaconda3...

所以我所做的是使用 Windows 资源管理器将我的 E:\Anaconda 文件夹重命名为 E:\poopAnaconda(右键单击、重命名等;使用 win7 64)。然后在 cmd 提示符下我输入

E:\Anaconda3>conda info -a

然后神奇地重命名后,conda info 现在显示 3.4.1.final.0 作为我的 python 版本,我的环境现在成功地位于 E:\Anaconda3 !!!(您可以在 cmd 输出的中途看到它)

在按回车键(对于 conda info -a)然后显示信息后有一个轻微的停顿。我可以在输出中看到的唯一区别是关于许可证 pfffffff 的一些警告

我的两个 anaconda 文件夹也都列在 PATH 中:

...E:\Anaconda;E:\Anaconda\Scripts;E:\Anaconda3;E:\Anaconda3\Scripts

在常见问题解答中,有 8 种不同的方式来激活和/或创建环境,没有一种比这更容易。

那么,这是改变 conda 环境的“坏”方式吗?我的意思是它到目前为止有效。但是,为什么它起作用了?

在我的天才突破之前:

E:\Anaconda3>conda info -a
Current conda install:

             platform : win-64
        conda version : 3.8.4
  conda-build version : 1.8.2
       python version : 2.7.8.final.0
     requests version : 2.5.1
     root environment : E:\Anaconda  (writable)
  default environment : E:\Anaconda
     envs directories : E:\Anaconda\envs
        package cache : E:\Anaconda\pkgs
         channel URLs : http://repo.continuum.io/pkgs/free/win-64/
                        http://repo.continuum.io/pkgs/free/noarch/
                        http://repo.continuum.io/pkgs/pro/win-64/
                        http://repo.continuum.io/pkgs/pro/noarch/
          config file : None
    is foreign system : False

# conda environments:
#
root                  *  E:\Anaconda

sys.version: 2.7.8 |Anaconda 2.1.0 (64-bit)| (default...
sys.prefix: E:\Anaconda
sys.executable: E:\Anaconda\python.exe
conda location: E:\Anaconda\lib\site-packages\conda
conda-build: E:\Anaconda\Scripts\conda-build.exe
conda-convert: E:\Anaconda\Scripts\conda-convert.exe
conda-develop: E:\Anaconda\Scripts\conda-develop.exe
conda-env: E:\Anaconda\Scripts\conda-env.exe
conda-index: E:\Anaconda\Scripts\conda-index.exe
conda-metapackage: E:\Anaconda\Scripts\conda-metapackage.exe
conda-pipbuild: E:\Anaconda\Scripts\conda-pipbuild.exe
conda-skeleton: E:\Anaconda\Scripts\conda-skeleton.exe
user site dirs:

CIO_TEST: <not set>
CONDA_DEFAULT_ENV: <not set>
CONDA_ENVS_PATH: <not set>
PATH: C:\Program Files (x86)\RSA SecurID Token Common;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsP
owerShell\v1.0\;e:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;e:\Program Files\AMD\ATI.ACE\Core-Static;E:\Python34_64bit;E:\Anaconda;E:\Anaconda\Scripts;E:\Anaconda3;E:\Anaconda3\Scripts
PYTHONHOME: <not set>
PYTHONPATH: <not set>

License directories:
    C:\Users\Kardo Paska\.continuum
    C:\Users\Kardo Paska\AppData\Roaming\Continuum
    E:\Anaconda\licenses
License files (license*.txt):
Package/feature end dates:
E:\Anaconda3>

之后:

E:\Anaconda3>conda info -a
Current conda install:

             platform : win-64
        conda version : 3.7.0
  conda-build version : 1.8.2
       python version : 3.4.1.final.0
     requests version : 2.4.1
     root environment : E:\Anaconda3  (writable)
  default environment : E:\Anaconda3
     envs directories : E:\Anaconda3\envs
        package cache : E:\Anaconda3\pkgs
         channel URLs : http://repo.continuum.io/pkgs/free/win-64/
                        http://repo.continuum.io/pkgs/pro/win-64/
          config file : None
    is foreign system : False

# conda environments:
#
root                  *  E:\Anaconda3

sys.version: 3.4.1 |Anaconda 2.1.0 (64-bit)| (default...
sys.prefix: E:\Anaconda3
sys.executable: E:\Anaconda3\python.exe
conda location: E:\Anaconda3\lib\site-packages\conda
conda-build: E:\Anaconda3\Scripts\conda-build.exe
conda-convert: E:\Anaconda3\Scripts\conda-convert.exe
conda-develop: E:\Anaconda3\Scripts\conda-develop.exe
conda-index: E:\Anaconda3\Scripts\conda-index.exe
conda-metapackage: E:\Anaconda3\Scripts\conda-metapackage.exe
conda-pipbuild: E:\Anaconda3\Scripts\conda-pipbuild.exe
conda-skeleton: E:\Anaconda3\Scripts\conda-skeleton.exe
user site dirs:

CIO_TEST: <not set>
CONDA_DEFAULT_ENV: <not set>
CONDA_ENVS_PATH: <not set>
PATH: C:\Program Files (x86)\RSA SecurID Token Common;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsP
owerShell\v1.0\;e:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;e:\Program Files\AMD\ATI.ACE\Core-Static;E:\Python34_64bit;E:\Anaconda;E:\Anaconda\Scripts;E:\Anaconda3;E:\Anaconda3\Scripts
PYTHONHOME: <not set>
PYTHONPATH: <not set>

WARNING: could not import _license.show_info
# try:
# $ conda install -n root _license
E:\Anaconda3>

好的!!

E:\Anaconda3>pip install py2exe
Downloading/unpacking py2exe
Installing collected packages: py2exe
Successfully installed py2exe
Cleaning up...

E:\Anaconda3>
4

1 回答 1

5

这会起作用,但我不推荐它。

在 conda 环境的上下文中,“激活”环境只是意味着将该环境放在PATH您的 . 将多个东西放在你的PATH身上并移动它们也可以,因为在搜索时会跳过不存在的路径PATH

首先,你不应该安装 Anaconda 两次。相反,使用 conda 创建其他环境。

  • 您没有使用 conda:Anaconda 的优势之一是 conda 包管理器,它管理环境。最好选择您的 Anaconda 安装之一作为基础安装并创建另一个作为 conda 环境(例如,如果您选择 Anaconda3 作为基础,则使用conda create -n py2 python=2 anaconda. 然后activate py2deactivate

  • 如果您使用 conda,您可能会感到困惑:Anaconda 的每个安装都安装了不同的 conda。这意味着要管理每一个,您需要使用其中的 conda。使用错误的 conda 可能会导致问题(实际上并不支持)。使用一个 Anaconda 和环境,您可以使用conda install -n envname它并且它会做正确的事情,因为只有一个 conda。

但即使忽略这一点,关于你的天才想法,一些问题也会是:

  • PATH“泄漏”:如果您同时拥有 Anaconda 和 Anaconda3PATH并且在第二个而不是第一个中安装了某些东西,它将选择 Anaconda3 一个(因为PATH它的工作方式是搜索所有目录中的命令,直到找到它)。在 OS X 和 Linux 上,source activate将从中删除根环境PATH以防止这种情况发生。这在 Windows 上还没有发生,但我们想改变它。

  • 不便之处:移动目录真的比打字更容易activate envname吗?另请考虑,如果您创建一个新环境,则必须将其添加到PATH该技巧中才能起作用。如果您充分利用 conda,您将创建许多环境。

  • 您可能会破坏环境:对于 Windows 而言,这并不完全正确,至少对于大多数软件包而言。在 OS X 和 Linux 上确实如此。移动环境可能会破坏它,因为在某些地方存在硬编码的路径。因此,在您将 poopAnaconda 目录中的内容命名为“bake to Anaconda”之前,它可能无法正常工作。

于 2015-02-18T23:19:24.377 回答