当前位置: 首页 > 知识库问答 >
问题:

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

景河
2023-03-14

我想将Python用于科学应用程序,在一些研究之后,我决定使用Anaconda,因为它与大量的软件包捆绑在一起,并通过cmd轻松地使用conda install添加新模块。

我更喜欢使用64位版本,以更好地使用内存和提高效率,但也需要32位版本,因为有些库是32位的。同样,我更喜欢使用Python 3.5,因为这是未来和事情的发展方式。但是库的负载仍然是2.7,这意味着我两者都需要。

我必须安装4个版本的Anaconda(64位2.7、64位3.5、32位2.7、64位3.5)。每个版本大约380MB。我的目标是使用Jupyter笔记本和Spyder作为IDE。需要时,我必须在不同版本之间切换。我有相互冲突的库,路径问题和各种奇怪的问题。

所以,我计划从头开始做一个干净的安装。我想知道是否有更明智的方法来处理这个问题。如果有必要的话,我现在使用64位Windows 7。

共有3个答案

秦永望
2023-03-14

我只是想补充一下Mike Mullers的答案,因为我还想让我的IPython在32位和64位之间切换。

设置32位或64位环境后。使用以下命令

pip install ipykernel

要在此环境上安装ipykernel。然后为其分配:

python -m ipykernel install --user --name myenv --display-name "Python (myenv)"

这里myenv是您的新环境的名称。有关切换内核的更多详细信息,请参见本页-http://ipython.readthedocs.io/en/stable/install/kernel_install.html

屈宏爽
2023-03-14

Conda有一个配置变量subdir,可用于将包搜索约束到平台(例如win-32)。我认为最简单的过程是创建空的env,设置它的subdir,然后继续(受约束的)安装。例如

conda create -n py27_32
conda activate py27_32
conda config --env --set subdir win-32
conda install python=2.7
conda create -n py37_64
conda activate py37_64
conda config --env --set subdir win-64
conda install python=3.7

或者,如果需要(例如)从YAML文件创建环境,但需要win-32平台,可以使用CONDA_SUBDIR环境变量:

set CONDA_SUBDIR=win-32
conda env create -f env.yaml -n my_env_32
set CONDA_SUBDIR=
conda activate my_env_32
conda config --env --set subdir win-32

这个过程的好处是,无论何时激活env,都将始终设置变量,因此将来对env的更改将保留在指定的子目录中。

也可以在--channel |-c参数中指定平台:

conda install -c defaults/win-32 --override-channels python=3.7

此处需要--覆盖通道,以确保仅使用提供的通道和子目录(win-32)。

但是,在整个环境上设置细分曲面可能是更可靠的做法。

也可以在YAML环境定义中使用subdir规范。然而,这不太可靠(见下文和评论)。例如

py37_win32.yaml

name: py37_win32
channels:
 - defaults/win-32
dependencies:
 - python=3.7

@Bicudo已经尝试了这一点并确认了它的有效性,但注意到它并没有对环境的未来更新设置任何特定于环境的约束。此外,@Geeocode指出,默认的子目录仍然可能泄漏,这可能是由于conda env create在求解过程中仍然可以访问全局通道配置(对于conda env create,没有等效的--覆盖通道标志)。因此,最好在创建环境之前和之后仍然设置细分曲面,例如。,

set CONDA_SUBDIR=win-32
conda env create -f py37_win32.yaml
set CONDA_SUBDIR=
conda activate py37_win32
conda config --env --set subdir win-32

或者,从Conda v4.9开始,也可以指定环境变量作为YAML的一部分。也就是说,可以在创建环境时有效地定义环境的CONDA_SUBDIR值:

py37_win32.yaml

name: py37_win32
channels:
 - defaults/win-32
dependencies:
 - python=3.7
variables:
  CONDA_SUBDIR: win-32
乐正心水
2023-03-14

确保设置正确的环境变量(https://github.com/conda/conda/issues/1744)

为32bit 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

为64位Python 3.5创建一个:

set CONDA_FORCE_32BIT=
conda create -n py35_64 html" target="_blank">python=3.5
set CONDA_FORCE_32BIT=
activate py35_64

最好是在批处理文件中写入激活命令,这样您只需键入一个命令,并且不会忘记设置正确的32/64位标志。

使现代化

您不需要为此安装完整的Anaconda发行版。迷你康达就足够了:

这些Miniconda安装程序包含conda包管理器和Python。安装Miniconda后,您可以使用conda命令安装任何其他软件包并创建环境等。。。

安装程序有两种变体:Minicon da是基于Python 2的,而Minicon da3是基于Python 3的。请注意,选择安装哪一个Minicon da只影响根环境。无论您安装哪个版本的Minicon da,您仍然可以安装Python 2. x和Python 3. x环境。

我建议您使用Minicon da3 64位作为根环境。

以后,您始终可以通过以下方式安装完整的Anaconda:

conda install anaconda

请注意,它可能会降级您以前在活动环境中安装的一些包。

 类似资料:
  • 问题内容: 我想将Python用于科学应用程序,经过一些研究决定,我将使用Anaconda,因为它与大量程序包捆绑在一起,并且通过cmd使用添加新模块非常容易。 我更喜欢使用64位版本以更好地使用RAM和提高效率,但也需要32位版本,因为某些库是32位的。同样,我更喜欢使用Python 3.5,因为这是未来和事情发展的方式。但是库的负载仍然是2.7,这意味着我需要两者。 我必须安装4个版本的Ana

  • 问题内容: 我已经使用Java一段时间了,而我典型的设置新开发机的习惯要求从Oracle站点下载并安装最新的JDK。 今天这引发了一个不寻常的问题, 回想起来,我已经安装了之前的两个版本,并且很高兴将普通的工具链插入(Eclipse)。在我的日常编程中,我不会回想起曾经因为使用64位JRE(或为此目的而针对64位JRE)而不得不以其他方式进行更改或思考的事情。 根据我对64位和32位的理解- 确实

  • 问题内容: 我正在创建一个非常简单的应用程序,该应用程序可以读取和显示文本文件并进行搜索。 我问自己是否有兴趣向用户提出32位和64位版本。 区别仅在于使用64位版本访问更多的内存堆大小,还是还有其他兴趣? 32位编译程序是否可以在64位JVM上运行(我认为是) 问题答案: 任何 程序的32位和64位版本之间的唯一区别是机器字的大小,可寻址内存的数量以及所使用的操作系统ABI。对于Java,语言规

  • 标题说明了一切。我确实看到过类似的问题,有人建议关于http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame,但是所有的pygame可下载文件都是.whl格式的,我不知道如何在Windows7上运行。我尝试了“CD[directory]>pip安装[filename]”,但没有成功。

  • 问题内容: 我想知道x86和x64中的64位长吗? 问题答案: 是。Java 在任何JVM上都是64位,无一例外。所有Java原语类型都是完全可移植的,并且在所有实现中都具有固定的大小。

  • 问题内容: 我的电脑正在使用Windows 7 64位。但是将要部署我的jsp Web应用程序的服务器是32位。 我需要在PC上安装32位JDK / JRE才能进行开发吗?我正在使用Eclipse。 非常感谢你。 问题答案: 您绝对不需要安装32位JRE即可进行开发。您构建的Java代码不会跟踪您的64位。(我假设您没有使用JNI,这会使事情变得有些复杂。) 不过,您 可能 需要安装32位JRE进