Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个Python引擎(32位/64位和2.7/3.5)_Python_Python 3.x_Python 2.7_Anaconda_Conda - Fatal编程技术网

使用多个Python引擎(32位/64位和2.7/3.5)

使用多个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

我想将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)。每个版本大约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。相反,您可能希望熟悉康达环境的概念。如今