使用多个Python引擎(32位/64位和2.7/3.5)
我想将Python用于科学应用程序,在一些研究之后,我决定使用Anaconda,因为它与大量的软件包捆绑在一起,并通过cmd轻松地使用使用多个Python引擎(32位/64位和2.7/3.5),python,python-3.x,python-2.7,anaconda,conda,Python,Python 3.x,Python 2.7,Anaconda,Conda,我想将Python用于科学应用程序,在一些研究之后,我决定使用Anaconda,因为它与大量的软件包捆绑在一起,并通过cmd轻松地使用conda install添加新模块 为了更好地使用RAM和提高效率,我更喜欢使用64位版本,但是 还需要32位版本,因为有些库是32位的。类似地,我更喜欢使用Python3.5,因为这是未来的发展方向。但是库的负载仍然是2.7,这意味着我需要两者 我必须安装4个版本的Anaconda(64位2.7、64位3.5、32位2.7、64位3.5)。每个版本大约380M
conda install
添加新模块
为了更好地使用RAM和提高效率,我更喜欢使用64位版本,但是
还需要32位版本,因为有些库是32位的。类似地,我更喜欢使用Python3.5,因为这是未来的发展方向。但是库的负载仍然是2.7,这意味着我需要两者
我必须安装4个版本的Anaconda(64位2.7、64位3.5、32位2.7、64位3.5)。每个版本大约380MB。我的目标是使用Jupyter笔记本和Spyder作为IDE。需要时,我必须在不同版本之间切换。我有相互冲突的库,路径问题和各种奇怪的问题
所以,我计划从头开始做一个干净的安装。我想知道是否有更明智的方法来处理这个问题。如果需要的话,我现在使用64位Windows 7。请确保设置正确的环境变量() 为32位Python 2.7创建新环境:
set CONDA_FORCE_32BIT=1
conda create -n py27_32 python=2.7
激活它:
set CONDA_FORCE_32BIT=1
activate py27_32
deactivate py27_32
set CONDA_FORCE_32BIT=
activate py35_64
停用它:
set CONDA_FORCE_32BIT=1
activate py27_32
deactivate py27_32
set CONDA_FORCE_32BIT=
activate py35_64
为64位Python 3.5创建一个:
set CONDA_FORCE_32BIT=
conda create -n py35_64 python=3.5
激活它:
set CONDA_FORCE_32BIT=1
activate py27_32
deactivate py27_32
set CONDA_FORCE_32BIT=
activate py35_64
最好是在批处理文件中写入激活命令,这样您只需键入一个命令,并且不会忘记设置正确的32/64位标志
更新
您不需要为此安装完整的Anaconda发行版。足够了:
这些Miniconda安装程序包含conda包管理器和Python。安装Miniconda后,您可以使用conda命令安装任何其他软件包并创建环境等
安装程序有两种变体:Miniconda基于Python 2,Miniconda3基于Python 3。请注意,选择安装哪个Miniconda只会影响根环境。无论安装哪个版本的Miniconda,都可以同时安装Python2.x和Python3.x环境
我建议您使用Miniconda3 64位作为根环境
以后,您始终可以通过以下方式安装完整的Anaconda:
conda install anaconda
注意它可能会降低您活动环境中以前安装的一些软件包的级别。我只想添加到Mike Mullers answer中,因为我还想让我的IPython在32位和64位之间切换 设置32位或64位环境后。使用以下命令
pip install ipykernel
要在此环境上安装ipykernel。然后为其分配:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
这里myenv是您的新环境的名称。有关切换内核的详细信息,请参见本页-设置子目录约束
Conda有一个配置变量subdir,可用于将包搜索限制到平台(例如win-32)。我认为最简单的步骤是创建空环境,将其设置为subdir,然后继续(受限)安装。比如说,
win-32,Python 2.7
conda create-n py27_32
康达激活py27_32
conda config--env--set subdir win-32
conda安装python=2.7
win-64,Python 3.7
conda create-n py37_64
康达激活py37_64
conda config--env--set subdir win-64
conda安装python=3.7
或者,如果需要(例如)从YAML文件创建环境,但需要win-32平台,可以使用CONDA_SUBDIR
环境变量:
set CONDA_SUBDIR=win-32
conda env create-f env.yaml-n my_env_32
设置CONDA_细分=
康达激活我的环境32
conda config--env--set subdir win-32
这个过程的好处是,无论何时激活env,都将始终设置变量,因此将来对env的更改将保留在指定的子目录中
特殊约束 也可以在
--channel |-c
参数中指定平台:
conda安装-c默认值/win-32——覆盖通道python=3.7
此处需要使用--覆盖通道
,以确保仅使用提供的通道和子目录(win-32)
但是,在整个env上设置子目录可能是更可靠的做法
YAML约束 也可以在YAML环境定义中使用subdir规范。然而,这不太可靠(见下文和评论)。比如说, py37_win32.yaml
name:py37\u win32
频道:
-默认值/win-32
依赖项:
-python=3.7
@Bicudo已经尝试了这一点并确认了它的有效性,但注意到它并没有对环境的未来更新设置任何特定于环境的约束。此外,@Geeocode指出,默认的子目录仍然可能泄漏,这可能是由于conda env create
在求解过程中仍然可以访问全局通道配置(对于conda env create
,没有等效的--覆盖通道
标志)。因此,最好在创建环境之前和之后仍然设置子目录,例如
set CONDA_SUBDIR=win-32
conda env create-f py37_win32.yaml
设置CONDA_细分=
康达激活py37_win32
conda config--env--set subdir win-32
或者,从Conda v4.9开始,还可以指定环境变量作为YAML的一部分。也就是说,可以在创建环境时有效地定义环境的CONDA_SUBDIR
值:
py37_win32.yaml
name:py37\u win32
频道:
-默认值/win-32
依赖项:
-python=3.7
变量:
康达苏尔:win-32
每个python版本都不需要单独安装conda。相反,您可能希望熟悉康达环境的概念。如今