質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

x86_64

x86-64は、 x86命令を64ビット幅のデータやメモリアドレスに対応できるよう拡張した命令セットです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3619閲覧

【M1 MAC】arm版とintel版の環境を両立し自動で切り替えできない

shishi_maru440

総合スコア38

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

x86_64

x86-64は、 x86命令を64ビット幅のデータやメモリアドレスに対応できるよう拡張した命令セットです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/31 13:49

編集2021/06/01 09:28

前提・実現したいこと

・intel版とarm版の自動切り替え
M1 MACにarmネイティブな環境とintel版での2つの環境構築を
行っています。armは問題なく構築できintel版で仮想環境の作成
までできたのですがactivateすることができません。

【仮想環境】
arm:/Users/440h/miniforge3/envs/
x86_64(intel): /usr/local/Caskroom/miniforge/base/envs/

intel版はHomebrewをinstallし
HomebrewからMiniforgeをinstall.
そこから仮想環境を作成しました。

arch -x86_64 /usr/local/bin/conda create -n act_env python=3.7 arch -x86_64 /usr/local/bin/conda info -e /Users/440h/miniforge3/envs/my_env /Users/440h/miniforge3/envs/rst_env base * /usr/local/Caskroom/miniforge/base act_env /usr/local/Caskroom/miniforge/base/envs/act_env

エラーメッセージ

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

$ conda init <SHELL_NAME>

Currently supported shells are:

  • bash
  • fish
  • tcsh
  • xonsh
  • zsh
  • powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

### 該当のソースコード ```tarminal arch -x86_64 /usr/local/bin/conda activate

###試したこと

conda init

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shishi_maru440

2021/05/31 15:14

アドバイスありがとうございます。 その手順やってみたのですがダメでした。 zshrcに原因とかないでしょうか・・・ export PATH=$PATH:/Users/440h/miniforge3/bin # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/Users/440h/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/Users/440h/miniforge3/etc/profile.d/conda.sh" ]; then . "/Users/440h/miniforge3/etc/profile.d/conda.sh" else export PATH="/Users/440h/miniforge3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<
jbpb0

2021/05/31 23:02 編集

現状のzshrcはarm仕様ですね arch -x86_64 /usr/local/bin/conda init zsh とやれば(「arch -x86_64」は要らないかも)、zshrcがintel仕様になりそうな気がしますが、それだと逆にarm版の使用に支障が出るかもしれません
shishi_maru440

2021/06/01 01:20

アドバイスありがとうございます。 conda initi を実施してもactivateすることができませんでした。。。 【やったこと】 echo $SHELL /bin/zsh arch -x86_64 /usr/local/bin/conda init zsh open ~/.zshrc ——————————————— export PATH=$PATH:/urs/local/opt # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/usr/local/Caskroom/miniconda/base/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" ]; then . "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" else export PATH="/usr/local/Caskroom/miniconda/base/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<< ————————————————— PATHが間違っていたのでPATHも書き換えています。 arch -x86_64 /usr/local/bin/brew install python@3.7 再度仮想環境構築 arch -x86_64 /usr/local/bin/conda create -n test python=3.7 仮想環境生成確認 arch -x86_64 /usr/local/bin/conda info -e /Users/440h/miniforge3/envs/my_env base * /usr/local/Caskroom/miniconda/base test /usr/local/Caskroom/miniconda/base/envs/test try /usr/local/Caskroom/miniconda/base/envs/try
jbpb0

2021/06/01 02:31

intel版condaでinitした後、ターミナルを再起動したら、PATHがintel版が優先されるように設定されてるのでしょうか? which conda which python とかやったら、intel版のが出てきますか?
shishi_maru440

2021/06/01 08:18

色々試行錯誤してて少し分かったのは 手動での切り替えですが 1.armのzshをcopyしておく。 2.intelのzshをcopyしておく。 3.open ~/.zshrcでzshを開く 4.切り替えたい方のzshをコピー&ペースト 5.ターミナルを立ち上げ直す とすれば一応切り替えることはできました。 ほんとは自動で切り替えたいのですが。。。 このやり方であれば絶対パスで指定しなくても conda activate でアクティブにできることはわかりました。 ーーーーーーーーーーーーーーーーーーーーーーーーーー 今はintel版の設定になってます。 which python >>> /usr/local/Caskroom/miniconda/base/bin/python which python >>> conda () { if [ "$#" -lt 1 ] then "$CONDA_EXE" $_CE_M $_CE_CONDA else \local cmd="$1" shift case "$cmd" in (activate | deactivate) __conda_activate "$cmd" "$@" ;; (install | update | upgrade | remove | uninstall) CONDA_INTERNAL_OLDPATH="${PATH}" __add_sys_prefix_to_path "$CONDA_EXE" $_CE_M $_CE_CONDA "$cmd" "$@" \local t1=$? PATH="${CONDA_INTERNAL_OLDPATH}" if [ $t1 = 0 ] then __conda_reactivate else return $t1 fi ;; (*) CONDA_INTERNAL_OLDPATH="${PATH}" __add_sys_prefix_to_path "$CONDA_EXE" $_CE_M $_CE_CONDA "$cmd" "$@" \local t1=$? PATH="${CONDA_INTERNAL_OLDPATH}" return $t1 ;; esac fi }
jbpb0

2021/06/01 08:23 編集

> 3.open ~/.zshrcでzshを開く > 4.切り替えたい方のzshをコピー&ペースト > 5.ターミナルを立ち上げ直す をやらなくても、 source zshrcのコピー で、ターミナル立ち上げ直し後の状態になりませんか? (立ち上げ直さなくても)
shishi_maru440

2021/06/01 08:28

ターミナルは intel版:ターミナル arm版:iTrem2(rosettaが動かない設定) で分けています。 確かに立ち上げ直す必要はないですね。 使いたい方のターミナルを開いて コピーすればできますね。 今回は検証のSTEPだったので こんな流れになってしまいました。
jbpb0

2021/06/01 08:33

「zshrcのコピー」というのは、その時にコピーするという意味ではなくて、あらかじめコピーしておいたファイル、という意味です > 1.armのzshをcopyしておく。 > 2.intelのzshをcopyしておく。 をやって、ホームディレクトリに zshrc_arm zshrc_x86 というファイルがあるとして、intel版使いたいときは source ~/zshrc_x86 を実行したら、シェル環境変わるのではないかと
jbpb0

2021/06/01 09:19

source ~/zshrc_x86 とかでうまくいく場合ですが、「uname -m」の結果を使って「source」の対象を自動切り替えするように ~/.zshrc の中に書いておけば、それぞれのターミナルを起動するだけで、シェル環境の自動切り替えできるかも 参考 https://zenn.dev/ress/articles/069baf1c305523dfca3d の「まとめ」
shishi_maru440

2021/06/01 09:25

この手もありますか。 これならターミナル替えなくても簡単に 切り替えできますね。 今ちょっと見つけた方法でなんとか iTerm2とターミナルで分ける方法を一つ見つけました。 【参考】 https://www.zinntikumugai.com/2021/02/12/-5983-/ 【zshrc】 export PROMPT="%n@%m(`uname -m`) %1~ %# " if[ `uname -m` = "arm64" ]; then export PATH=$PATH:/opt/homebrew/bin export PATH=/bin:$PATH # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/Users/440h/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/Users/440h/miniforge3/etc/profile.d/conda.sh" ]; then . "/Users/440h/miniforge3/etc/profile.d/conda.sh" else export PATH="/Users/440h/miniforge3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<< else export PATH=$PATH:/urs/local/opt # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/usr/local/Caskroom/miniconda/base/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" ]; then . "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" else export PATH="/usr/local/Caskroom/miniconda/base/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<
jbpb0

2021/06/01 09:39 編集

はい そういうことです 一つのファイル内に必要なこと全部書いておくか、別ファイルに分けておいて必要なものだけ読み出すか、の違い 【追記】 https://www.zinntikumugai.com/2021/02/12/-5983-/#toc2 に「設定ファイルをそれぞれ用意して、環境によって読み込むファイルを切り替えるようにしたほうが良さそうなところもあります。」と書いてありますよね 私が書いた方法は、それです
guest

回答2

0

自己解決

zshrc

1export PROMPT="%n@%m(`uname -m`) %1~ %# " 2 3if[ `uname -m` = "arm64" ]; then 4 5 export PATH=$PATH:/opt/homebrew/bin 6 export PATH=/bin:$PATH 7 8 # >>> conda initialize >>> 9 # !! Contents within this block are managed by 'conda init' !! 10 __conda_setup="$('/Users/440h/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" 11 if [ $? -eq 0 ]; then 12 eval "$__conda_setup" 13 else 14 if [ -f "/Users/440h/miniforge3/etc/profile.d/conda.sh" ]; then 15 . "/Users/440h/miniforge3/etc/profile.d/conda.sh" 16 else 17 export PATH="/Users/440h/miniforge3/bin:$PATH" 18 fi 19 fi 20 21 unset __conda_setup 22 # <<< conda initialize <<< 23 24else 25 export PATH=$PATH:/urs/local/opt 26 27 28 # >>> conda initialize >>> 29 # !! Contents within this block are managed by 'conda init' !! 30 __conda_setup="$('/usr/local/Caskroom/miniconda/base/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" 31 if [ $? -eq 0 ]; then 32 eval "$__conda_setup" 33 else 34 if [ -f "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" ]; then 35 . "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" 36 else 37 export PATH="/usr/local/Caskroom/miniconda/base/bin:$PATH" 38 fi 39 fi 40 unset __conda_setup 41 # <<< conda initialize <<<

投稿2021/06/01 11:28

shishi_maru440

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

おはようございます。

問題文読ませていただきました。

以下のような手順でご確認いただけますか?

  1. ターミナルを開く。
  2. echo $SHELLを実行して、シェルを確認する。
  3. conda init {シェル名}を実行する。({シェル名}には、手順2で確認したものを選択する。bash, fish, tcsh, xonsh, zsh, powershellなどが該当する。)
  4. ターミナルを閉じてrestartする。

上記で難しいと感じた場合は、手順2で実行した結果を、追記いただけますと幸いです。

ご確認のほど、よろしくお願いいたします。????‍♂️

投稿2021/05/31 21:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shishi_maru440

2021/06/01 00:11

アドバイスありがとうございます。 conda initi を実施してもactivateすることができませんでした。。。 【やったこと】 echo $SHELL /bin/zsh arch -x86_64 /usr/local/bin/conda init zsh open ~/.zshrc ——————————————— export PATH=$PATH:/urs/local/opt # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/usr/local/Caskroom/miniconda/base/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" ]; then . "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" else export PATH="/usr/local/Caskroom/miniconda/base/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<< ————————————————— PATHが間違っていたのでPATHも書き換えています。 arch -x86_64 /usr/local/bin/brew install python@3.7 再度仮想環境構築 arch -x86_64 /usr/local/bin/conda create -n test python=3.7 仮想環境生成確認 arch -x86_64 /usr/local/bin/conda info -e /Users/440h/miniforge3/envs/my_env base * /usr/local/Caskroom/miniconda/base test /usr/local/Caskroom/miniconda/base/envs/test try /usr/local/Caskroom/miniconda/base/envs/try
shishi_maru440

2021/06/01 01:27

一つあまりsmartではないですがarmとintelで切り替える 手段を見つけました。かなり機械的なやり方ですが。。。 1.armのzshをcopyしておく。 2.intelのzshをcopyしておく。 3.open ~/.zshrcでzshを開く 4.切り替えたい方のzshをコピー&ペースト 5.ターミナルを立ち上げ直す この手順で実行することはなんとかできました。 が、なんともsmartではないです。理想は自動で切り替え。 ターミナルはrosettaをアクティブにしたx86_64と iterm2のarm用で切り分けているので、立ち上げた方で 自動で切り替えれないものでしょうか。。。。 それらしき内容はあったのですが、なかな理解できておりません。 https://qiita.com/chibiegg/items/43b7604a589e3760e88e 【メモ】 arm_zsh export PATH=$PATH:/opt/homebrew/bin # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/Users/440h/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/Users/440h/miniforge3/etc/profile.d/conda.sh" ]; then . "/Users/440h/miniforge3/etc/profile.d/conda.sh" else export PATH="/Users/440h/miniforge3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<< intel用 zsh export PATH=$PATH:/urs/local/opt # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/usr/local/Caskroom/miniconda/base/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" ]; then . "/usr/local/Caskroom/miniconda/base/etc/profile.d/conda.sh" else export PATH="/usr/local/Caskroom/miniconda/base/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<
退会済みユーザー

退会済みユーザー

2021/06/01 03:57

> https://qiita.com/chibiegg/items/43b7604a589e3760e88e 記事をざっくり要約すると、 ・intel版, arm版のhomebrewをinstallする。 ・ターミナルを複製して、片方はrosettaを使用するようにする。 ・zshに関してもそれぞれターミナルごとに別々のものを用意する。 ・それぞれターミナルをdockか何かに入れて置いて、起動するとそれぞれintel版, arm版のhomebrewが立ち上がり、brewが利用できる。 ということではないでしょうか?(activateのお話から、はずれているようには感じております。。)
shishi_maru440

2021/06/01 08:21

私の説明不足で申し訳ありません。 intel版, arm版のそれぞれの環境構築をした状態で activateすることができなかったのです。 arm版だけ構築した段階では問題なくできていました。
退会済みユーザー

退会済みユーザー

2021/06/01 17:02

zshrcの統一で対応することにした感じですね。 うまくいってよかったです。 またわからないこととかありましたら、気軽にご相談ください〜
shishi_maru440

2021/06/01 22:04

親切に対応していただきありがとうございました。 自己解決という形でfixしましたが皆様のアドバイスが なければここまで辿り着くことができませんでした。 心より感謝申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問