![](/img/trans.png)
[英]Python 2.7 and OpenCV different result using 64bit and 32bit, possible bug?
[英]Using multiple Python engines (32Bit/64bit and 2.7/3.5)
我想将 Python 用于科学应用程序,经过一些研究决定我将使用 Anaconda,因为它捆绑了大量软件包,并且通过 cmd 使用conda install
添加新模块很容易。
我更喜欢使用 64 位版本以获得更好的 RAM 使用和效率,但也需要 32 位版本,因为有些库是 32 位的。 同样,我更喜欢使用 Python 3.5,因为那是未来和事情的发展方向。 但是大量的库仍然是 2.7,这意味着我需要两者。
我必须安装 4 个版本的 Anaconda(64 位 2.7、64 位 3.5、32 位 2.7、64 位 3.5)。 每个版本大约 380MB。 我的目标是使用 Jupyter notebook 和 Spyder 作为 IDE。 我不得不在需要时在版本之间切换。 我有冲突的库、路径问题和各种奇怪的问题。
因此,我计划从头开始进行全新安装。 我想知道是否有更明智的方法来处理这个问题。 如果重要的话,我现在使用 Windows 7 64 位。
确保设置正确的环境变量( https://github.com/conda/conda/issues/1744 )
为 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
为 64 位 Python 3.5 创建一个:
set CONDA_FORCE_32BIT=
conda create -n py35_64 python=3.5
激活它:
set CONDA_FORCE_32BIT=
activate py35_64
最好的办法是在批处理文件中编写激活命令,这样您只需键入一个命令,并且不会忘记设置正确的 32/64 位标志。
更新
您不需要为此安装完整的 Anaconda 发行版。 Miniconda就足够了:
这些 Miniconda 安装程序包含 conda 包管理器和 Python。 安装 Miniconda 后,您可以使用 conda 命令安装任何其他软件包并创建环境等。...
安装程序有两种变体:Miniconda 基于 Python 2,Miniconda3 基于 Python 3。 注意选择安装哪个 Miniconda 只影响 root 环境。 无论您安装哪个版本的 Miniconda,您仍然可以同时安装 Python 2.x 和 Python 3.x 环境。
我建议您使用 Miniconda3 64 位作为根环境。
您以后可以随时安装完整的 Anaconda:
conda install anaconda
请注意,它可能会降级您之前在活动环境中安装的一些软件包。
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
这里需要--override-channels
以确保仅使用提供的频道和子目录( win-32 )。
但是,在整个 env 上设置subdir可能是更可靠的做法。
也可以在 YAML 环境定义中使用subdir规范。 然而,这不太可靠(见下文和评论)。 例如,
py37_win32.yaml
name: py37_win32
channels:
- defaults/win-32
dependencies:
- python=3.7
@Bicudo 已尝试此操作并确认其有效,但指出它不会对环境的未来更新设置任何特定于环境的约束。 此外,@Geeocode 指出默认子目录仍然可能泄漏,这可能是由于conda env create
在解决期间仍然可以访问全局通道配置( --override-channels
conda env create
没有等效的--override-channels
标志)。 因此,在环境创建之前和之后仍然设置子目录是一个很好的做法,例如,
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
我只是想补充一下 Mike Mullers 的回答,因为我还希望我的 IPython 在 32 位和 64 位之间切换。
设置好32bit或64bit环境后。 使用以下命令
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
(现在在 conda win64 - python64 activate env)
set CONDA_SUBDIR=win-32
conda install python
你会看见
以下软件包将被更高优先级的频道取代:
ca-certificates anaconda/pkgs/main/win-64::ca-certifi~ --> anaconda/pkgs/main/win-32::ca-certificates-2021.7.5-h9f7ea03_1
openssl anaconda/pkgs/main/win-64::openssl-1.~--> anaconda/pkgs/main/win-32::openssl-1.1.1k-hc431981_0 python
anaconda/pkgs/main/win-64::python-3.9~--> anaconda/pkgs/main/win-32::python-3.9.5-h53c7b84_3继续 ([y]/n)?
只需输入“y”
此设置保存在文件“\\anaconda\\envs\\ you env \\ .condarc”中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.