windows terminal 中執行 miniconda 和 pip 的虛擬環境

立体风發表於2024-07-04

pip建立的虛擬環境

使用命令 python -m venv hf 建立虛擬環境後,在啟用時,會遇到一個錯誤,原因是powershell啟動了嚴格的審查指令碼策略。
這個錯誤資訊表明你嘗試在 PowerShell 中執行一個指令碼(具體是啟用一個虛擬環境),但是你的系統設定阻止了未經簽名的指令碼的執行。PowerShell 有一個叫做“執行策略”(Execution Policy)的安全特性,用於控制是否可以執行指令碼以及從哪裡可以執行它們。

預設情況下,PowerShell 的執行策略可能是設為 RestrictedAllSigned,這意味著只有經過數字簽名的指令碼才能執行,或者根本不能執行任何指令碼。要解決這個問題,你需要更改執行策略以允許執行指令碼。

警告: 更改執行策略可能會降低系統的安全性,因為它允許執行來自任何來源的指令碼。確保只從你信任的來源執行指令碼,並理解潛在的風險。

要更改執行策略,請按照以下步驟操作:

  1. 開啟 PowerShell 作為管理員。
  2. 輸入以下命令來檢視當前的執行策略:
    Get-ExecutionPolicy
    
  3. 如果輸出顯示 RestrictedAllSigned,則需要將其更改為 RemoteSignedUnrestrictedUnrestricted 是最寬鬆的設定,允許執行所有指令碼)。輸入以下命令之一來更改執行策略:
    Set-ExecutionPolicy RemoteSigned
    
    或者
    Set-ExecutionPolicy Unrestricted
    
  4. 系統將提示你確認更改,鍵入 Y 並按 Enter 鍵確認。
  5. 重新啟動 PowerShell 或關閉並重新開啟命令列介面,然後再次嘗試執行你的指令碼。

請注意,更改執行策略可能會影響系統安全,因此在生產環境中應謹慎操作。如果只是臨時需要執行指令碼,可以考慮使用 -ExecutionPolicy 引數直接在執行指令碼時指定策略,例如:

powershell -ExecutionPolicy Bypass -File .\hf\Scripts\activate

但這同樣會繞過正常的執行策略檢查,應小心使用。

miniconda 虛擬環境在 ternimal 中執行

如果在安裝的時候,選擇把 conda 加入 PATH,否則,就要在 PATH 中新增 conda 的執行目錄。
然後,開啟 powershell ,執行 conda --version,檢視是否可以正確顯示。
如果正確顯示,則執行 conda init powershell,這樣就可以了。

解釋 conda init 幫助資訊

conda 初始化命令幫助資訊

使用方法:

conda-script.py init 命令用於初始化 conda 以便於在 shell 中進行互動。

必需引數:
  • SHELLS:一個或多個要初始化的 shell。如果不提供,則預設值為 Unix 上的 'bash' 和 Windows 上的 'cmd.exe' 與 'powershell'。使用 --all 標誌可以初始化所有可用的 shell。可選 shell 包括:['bash', 'cmd.exe', 'fish', 'powershell', 'tcsh', 'xonsh', 'zsh']。
選項:
  • -h, --help:顯示此幫助資訊並退出。
  • --all:初始化所有當前可用的 shell。
  • --anaconda-prompt:在桌面上新增一個 'Anaconda Prompt' 圖示。
  • -d, --dry-run:僅顯示將要執行的操作,不實際執行。
配置型別:
  • --user:為當前使用者初始化 conda(預設)。
  • --no-user:不為當前使用者初始化 conda。
  • --system:為系統上的所有使用者初始化 conda。
  • --reverse:撤銷上次 conda 初始化的效果。
輸出、提示和流程控制選項:
  • --json:將所有輸出報告為 json。適用於程式化使用 conda。
  • -v, --verbose:可以多次使用。一次用於詳細輸出,兩次用於 INFO 日誌記錄,三次用於 DEBUG 日誌記錄,四次用於 TRACE 日誌記錄。
  • -q, --quiet:不顯示進度條。

關鍵說明:

conda 的關鍵功能需要它直接與呼叫 conda 的 shell 進行互動。conda activateconda deactivate 命令特別地,是 shell 級別的命令。也就是說,它們影響了被互動的 shell 上下文的狀態(例如,環境變數)。其他核心命令,如 conda createconda install,也必然與 shell 環境互動。它們因此以特定於每個 shell 的方式實現。每個 shell 必須進行配置以利用這些命令。

此命令會對你的系統進行特定且針對每個 shell 定製的更改。在進行更改前,使用 --dry-run 標誌可以看到具體哪些檔案和系統位置將受到影響。為了看到每個位置將進行的確切更改,使用 --verbose 標誌。

重要提示:執行 conda init 後,大多數 shell 需要關閉並重新啟動以使更改生效。這確保了 shell 能夠識別和應用 conda 初始化帶來的環境變數和其他配置變化。

相關文章