簡體   English   中英

使用多個 Python 引擎(32Bit/64bit 和 2.7/3.5)

[英]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 ,然后繼續進行(受限)安裝。 例如,

win-32,Python 2.7

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

win-64,Python 3.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 約束

也可以在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM