rmf*_*rmf 48 python python-2.7 python-3.x anaconda conda
我想将Python用于科学应用程序,经过一些研究决定我将使用Anaconda,因为它捆绑了大量的软件包并conda install通过cmd 添加新的模块很容易.
我更喜欢使用64位版本以获得更好的RAM使用和效率,但也需要32位版本,因为有些库是32位.同样,我更喜欢使用Python 3.5,因为这是未来和事情的发展方向.但是大量的库仍然是2.7,这意味着我需要两者.
我必须安装4个版本的Anaconda(64bit 2.7,64bit 3.5,32bit 2.7,64bit 3.5).每个版本大约380MB.我的目标是使用Jupyter笔记本和Spyder作为IDE.我必须在需要时在版本之间切换.我有相互矛盾的库,路径问题和各种奇怪的问题.
所以,我打算从头开始做一个干净的安装.我想知道是否有更明智的方法来处理这个问题.如果重要的话,我现在使用Windows 7 64位.
Mik*_*ler 74
确保设置正确的环境变量(https://github.com/conda/conda/issues/1744)
为32位Python 2.7创建一个新环境:
set CONDA_FORCE_32BIT=1
conda create -n py27_32 python=2.7
Run Code Online (Sandbox Code Playgroud)
激活它:
set CONDA_FORCE_32BIT=1
activate py27_32
Run Code Online (Sandbox Code Playgroud)
停用它:
deactivate py27_32
Run Code Online (Sandbox Code Playgroud)
为64位Python 3.5创建一个:
set CONDA_FORCE_32BIT=
conda create -n py35_64 python=3.5
Run Code Online (Sandbox Code Playgroud)
激活它:
set CONDA_FORCE_32BIT=
activate py35_64
Run Code Online (Sandbox Code Playgroud)
最好的方法是在批处理文件中编写激活命令,这样您只需键入一个命令,就不会忘记设置正确的32/64位标志.
UPDATE
您无需为此安装完整的Anaconda分发版.Miniconda足够了:
这些Miniconda安装程序包含conda包管理器和Python.安装Miniconda后,您可以使用conda命令安装任何其他软件包并创建环境等....
安装程序有两种变体:Miniconda基于Python 2,Miniconda3基于Python 3.请注意,选择安装哪个Miniconda只会影响根环境.无论您安装哪种版本的Miniconda,您仍然可以安装Python 2.x和Python 3.x环境.
我建议你使用Miniconda3 64位作为根环境.
您可以随后安装完整的Anaconda:
conda install anaconda
Run Code Online (Sandbox Code Playgroud)
请注意,它可能会降低您在活动环境中的某些以前安装的软件包.
mer*_*erv 21
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
Run Code Online (Sandbox Code Playgroud)
conda create -n py37_64
conda activate py37_64
conda config --env --set subdir win-64
conda install python=3.7
Run Code Online (Sandbox Code Playgroud)
或者,例如,如果您需要从 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
Run Code Online (Sandbox Code Playgroud)
这个过程的好处是现在每当激活 env 时都会设置变量,因此将来对 env 的更改将保留在指定的子目录中。
也可以在--channel|-c参数中指定平台:
conda install -c defaults/win-32 --override-channels python=3.7
Run Code Online (Sandbox Code Playgroud)
这里--override-channels需要确保仅使用提供的频道和子目录 ( win-32 )。
但是,在整个 env 上设置subdir可能是更可靠的做法。
也可以在 YAML 环境定义中使用subdir规范。然而,这不太可靠(见下文和评论)。例如,
py37_win32.yaml
name: py37_win32
channels:
- defaults/win-32
dependencies:
- python=3.7
Run Code Online (Sandbox Code Playgroud)
@Bicudo 已尝试此操作并确认其有效,但指出它不会对环境的未来更新设置任何特定于环境的约束。此外,@Geeocode 指出默认子目录仍然可能泄漏,这可能是由于conda env create在求解过程中仍然可以访问全局通道配置(没有等效的--override-channels标志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
Run Code Online (Sandbox Code Playgroud)
或者,从 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50987 次 |
| 最近记录: |