亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PATH="/custom/dir:$PATH" 前置而不是附加 - Conda 與 Pyenv

PATH="/custom/dir:$PATH" 前置而不是附加 - Conda 與 Pyenv

九州編程 2023-10-11 22:56:26
我有一臺裝有 Pyenv 和 Anaconda 的 Mac(最新軟件更新)。我使用 Homebrew 管理包并安裝了 Python 3。當echo $PATH我得到以下信息時:/Library/Frameworks/Python.framework/Versions/3.8/bin:\ /usr/local/bin:\ /usr/bin:\ /bin:\ /usr/local/sbin:\ /usr/sbin:\ /sbin:\ /Library/TeX/texbin:\ /Users/luca/.pyenv/versions/anaconda3-2020.02/condabin:\ /Users/luca/.pyenv/versions/3.8.5/bin:\ /Users/luca/.pyenv/bin我不知道是什么設置/Library/Frameworks/Python.framework/Versions/3.8/bin:這個目錄在我的 Mac 上不存在。我之前安裝了 Python,但沒有使用 Homebrew,這就是創建該目錄的原因。我確實刪除了它,但仍然有一些東西可以導出該行$PATH,但我找不到它!有人有猜測嗎?我確實嘗試過grep -r /*,但對我的筆記本電腦來說,這樣的搜索太多了,無法完成。.zshenv我在我的代碼中設置了初始化pyenv和conda. 當然,我確實寫了PATH="/dir/to/conda/bin:$PATH"同樣的內容pyenv(參見下面的代碼)。我不明白為什么,但他們最終以$PATH. 有人知道為什么嗎?是因為eval "$(pyenv init -)"之前被評價過嗎conda?# >>> pyenv initializeexport PYENV_SHELL=$SHELLexport PATH="/Users/luca/.pyenv/bin:$PATH"export PATH="/Users/luca/.pyenv/versions/3.8.5/bin:$PATH" #export Python 3.8 bin directoryif command -v pyenv 1>/dev/null 2>&1; then    eval "$(pyenv init -)"fi# <<< pyenv initialize <<<# >>> conda initialize >>># !! Contents within this block are managed by 'conda init' !!__conda_setup="$('/Users/luca/.pyenv/versions/anaconda3-2020.02/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"if [ $? -eq 0 ]; then    eval "$__conda_setup"else    if [ -f "/Users/luca/.pyenv/versions/anaconda3-2020.02/etc/profile.d/conda.sh" ]; then        . "/Users/luca/.pyenv/versions/anaconda3-2020.02/etc/profile.d/conda.sh"    else        export PATH="/Users/luca/.pyenv/versions/anaconda3-2020.02/bin:$PATH"    fifiunset __conda_setup# <<< conda initialize <<<
查看完整描述

2 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

長話短說

$PATH在 macOS 中,如果您將任何在 macOS 上修改的代碼放入內.zshenv,它將被覆蓋。您應該將其放入.zshrc或其他地方,然后由您的.zshrc.

完整解釋

當獲取 zsh 時,文件按以下順序讀?。?/p>

etc/zshenv/->?$ZDOTDIR/.zshenv/->?etc/zprofile/->?$ZDOTDIR/.zprofile/->?etc/zshrc/->?$ZDOTDIR/.zshrc/->?etc/zlogin/->$ZDOTDIR/.zlogin/

在 macOS 中/etc/zprofile,源腳本根據這些文件的內容覆蓋 $PATH:

/etc/paths
/etc/paths.d
/etc/manpaths
/etc/manpaths.d

因此,您不應該將任何更改的行放入$PATH您的 中$ZDOTDIR/.zshenv,而是放入此后的任何文件中(例如$ZDOTDIR/.zshrc)。不要編輯中的文件/etc/!


查看完整回答
反對 回復 2023-10-11
?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

我有完全相同的問題,并且我找不到任何其他來源來解釋為什么 conda 環境被附加而不是前置。我已將以下代碼添加到我的 .bash_profile (在 conda 初始化之后),這會翻轉所有路徑位置的順序。這絕對是一個糟糕的做法,但對于遇到同樣問題的人來說,這可能是一個快速解決方案。


locations=($(echo $PATH | tr ":" "\n"))

path=""


for (( idx=${#locations[@]}-2 ; idx>=0 ; idx-- )) ; do

    # Skip the last path location since this would put the general /Users/XXX/opt/anaconda3/condabin first

    # To not do this change the -2 to -1

    path="${path}:${locations[$idx]}"

done


path="${path:1}"

PATH=$path

export $PATH

正如評論中所述,我不會添加位置“/Users/XXX/opt/anaconda3/condabin”,因為它會弄亂我的環境位置,該位置位于倒數第二個位置。請檢查您自己的路徑變量并做出相應的決定。


編輯:如果有人有更好的解決方案,請告訴我!


查看完整回答
反對 回復 2023-10-11
  • 2 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號