Conda 無法安裝套件並出現 `OpenSSL appears to be unavailable on this machine` 時,通常代表 Anaconda 或 Miniconda 的 Python 執行環境找不到 OpenSSL 相關 DLL,導致 Conda 不能透過 HTTPS 下載 package metadata。我的處理方式是先確認錯誤訊息,再把 `anaconda3\Library\bin` 裡的 OpenSSL DLL 複製到 `anaconda3\DLLs`,最後重開終端機測試 `conda install`。
Conda 缺少 OpenSSL 會出現什麼錯誤?
Conda 缺少 OpenSSL 時,常見錯誤會卡在 `Collecting package metadata`,接著顯示 `CondaSSLError`。錯誤重點不是套件不存在,而是 Conda 無法建立 HTTPS 連線。
我當時用 `pip install` 或 `conda install` 安裝套件時,看到的錯誤訊息如下:
```text
Collecting package metadata (current_repodata.json): failed
CondaSSLError: OpenSSL appears to be unavailable on this machine.
OpenSSL is required to download and install packages.
Exception: HTTPSConnectionPool(host='conda.anaconda.org', port=443):
Max retries exceeded with url: /conda-forge/win-64/current_repodata.json
(Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))
```
Conda 官方 troubleshooting 文件也把 `Can't connect to HTTPS URL because the SSL module is not available` 歸在 SSL connection errors,原因通常是 Conda 找不到需要的 OpenSSL libraries,特別容易出現在 Windows 環境或 shell 沒有正確啟用 Conda environment 時(conda documentation,存取日期:2026-08-28)。
為什麼 Conda 會因為 OpenSSL 無法安裝套件?
Conda 安裝套件前會先透過 HTTPS 下載 channel 的 metadata;如果 Python 的 SSL 模組無法載入 OpenSSL library,Conda 連 metadata 都抓不到。這時候即使 package name 正確,也會在下載前失敗。
這類錯誤常見於三種情境:
| 情境 | 可能原因 | 優先檢查 |
|---|---|---|
| 更新 Anaconda Navigator 或 Conda 後才出現 | base environment 或 PATH 被改動 | 是否從 Anaconda Prompt 啟動 |
| Windows 上突然不能 `conda install` | OpenSSL DLL 不在 Python 可載入位置 | `Library\bin` 與 `DLLs` 是否有 DLL |
| GUI IDE 可以跑 Python 但不能安裝套件 | IDE 沒有正確 activate Conda environment | IDE terminal 的 Conda 啟用方式 |
Anaconda Knowledge Base 對 OpenSSL error 的處理也建議先確認 environment、PATH 與 Conda environment 是否已啟用,再檢查 Windows 系統中是否缺少 OpenSSL DLL(Anaconda,2026-04-17)。
如何修復 `OpenSSL appears to be unavailable on this machine`?
Windows Anaconda 環境可先到 `anaconda3\Library\bin` 找 OpenSSL DLL,再複製到 `anaconda3\DLLs`。這個做法保留我當時成功修復 Conda 安裝套件問題的最短流程。
我的修復流程是:
- 開啟 Anaconda 安裝目錄。
- 進入 `anaconda3\Library\bin`。
- 找到這兩個檔案:
- `libcrypto-1_1-x64.dll`
- `libssl-1_1-x64.dll`
- 複製這兩個 DLL。
- 貼到 `anaconda3\DLLs`。
- 關閉目前終端機,重新開啟 Anaconda Prompt 或命令列。
- 重新執行 `conda install` 或 `pip install` 測試。
如果 Anaconda 裝在 `C:\ProgramData\Anaconda3`,也可以用 PowerShell 參考下面指令:
```powershell
Copy-Item "C:\ProgramData\Anaconda3\Library\bin\libcrypto-1_1-x64.dll" "C:\ProgramData\Anaconda3\DLLs\"
Copy-Item "C:\ProgramData\Anaconda3\Library\bin\libssl-1_1-x64.dll" "C:\ProgramData\Anaconda3\DLLs\"
```
不同版本的 Anaconda 可能使用不同 OpenSSL DLL 檔名。若 `libcrypto-1_1-x64.dll` 或 `libssl-1_1-x64.dll` 不存在,我會先在 `Library\bin` 搜尋 `libcrypto`、`libssl`,再確認同一組版本的 DLL 是否都存在。
修復後要怎麼確認 Conda 環境正常?
修復 OpenSSL DLL 後,不要只看錯誤訊息有沒有消失,最好再檢查 Conda 是否從正確路徑啟動、Python 是否能載入 SSL 模組,以及 Conda 是否能抓到 channel metadata。
我會依序跑這幾個檢查:
```powershell
where conda
conda info
conda activate base
python -c "import ssl; print(ssl.OPENSSL_VERSION)"
conda install -c conda-forge requests
```
判斷重點如下:
| 檢查項目 | 正常狀態 | 異常時的方向 |
|---|---|---|
| `where conda` | 指向同一套 Anaconda 或 Miniconda | 移除混雜的舊 Conda 路徑 |
| `conda info` | active environment 與 base 路徑合理 | 確認是否啟用錯誤環境 |
| `import ssl` | 印出 OpenSSL 版本 | OpenSSL DLL 仍未被 Python 找到 |
| `conda install` | 能下載 metadata 並進入 solve | 再檢查 proxy、certificate 或 channel |
如果 `python -c "import ssl"` 還是失敗,代表問題還在 Python/Conda 的 DLL 載入層。這時候我會先回頭檢查 `PATH`、Conda 安裝目錄與是否有多套 Python 互相干擾,而不是一直重跑同一個安裝指令。
什麼時候應該重裝 Anaconda 或 Miniconda?
重裝 Anaconda 或 Miniconda 應該放在 DLL 修復、PATH 檢查與 environment 啟用都失敗之後。若 base environment 已經壞到 `conda info`、`conda activate base` 都不穩,乾淨重裝通常比繼續補檔更省時間。
我會用下面順序判斷:
- 先用 Anaconda Prompt 開啟,確認不是一般 CMD 沒有 activate Conda。
- 再補 `libcrypto-1_1-x64.dll`、`libssl-1_1-x64.dll` 到 `DLLs`。
- 檢查 `where conda` 是否混到舊版 Anaconda、Miniconda 或其他 Python。
- 若 Conda 還能執行,先嘗試更新 Conda。
- 若 base environment 已經無法正常載入 SSL,備份 environments 後重裝。
Anaconda Forum 上也有使用者回報相同錯誤,討論串中的 DLL 複製方式與我這次筆記一致;同一串討論也提醒,若複製 DLL 後仍失敗,就要回到 Conda 安裝狀態、base environment 與 PATH 污染排查(Anaconda Forum,2022-12;GitHub conda issue #11982,2022-10)。
延伸閱讀
- 使用 Conda 管理 Python 版本與函式庫
- 在 Python 使用 GPU:安裝正確 TensorFlow、PyTorch 與 CuPy 套件
- 生成只包含專案使用的 Library 列表:用 pipreqs 產生 requirements.txt
- TensorFlow 和 Keras 版本不相容錯誤:cannot import name 'dtensor' 解法
常見問題
Conda 出現 OpenSSL appears to be unavailable 是套件來源壞掉嗎?
通常不是套件來源壞掉。`OpenSSL appears to be unavailable` 代表 Conda 本機無法載入 SSL/OpenSSL 支援,所以連 HTTPS metadata 都抓不到;套件名稱、channel 設定與版本衝突通常還沒進入真正判斷階段。
可以把 `ssl_verify` 關掉解決 Conda OpenSSL 錯誤嗎?
不建議把 `ssl_verify` 關掉當成主要解法。`ssl_verify` 影響憑證驗證,但 OpenSSL DLL 缺失是 SSL 模組載入問題;關掉驗證不一定有效,也會降低下載套件時的安全性。
`libcrypto-1_1-x64.dll` 和 `libssl-1_1-x64.dll` 找不到怎麼辦?
新版 Anaconda 可能使用不同 OpenSSL DLL 檔名。可以先在 `anaconda3\Library\bin` 搜尋 `libcrypto` 與 `libssl`,確認是否存在同一組版本;如果 `Library\bin` 本身沒有這些 DLL,安裝可能已經不完整,建議修復或重裝 Anaconda。
複製 DLL 後還是無法 `conda install` 怎麼排查?
先重開終端機,再執行 `where conda`、`conda info`、`python -c "import ssl; print(ssl.OPENSSL_VERSION)"`。如果 `import ssl` 失敗,繼續查 PATH 與 Python/Conda 混用;如果 SSL 正常但下載失敗,再看 proxy、公司憑證、channel 或網路設定。
這個 Conda OpenSSL 錯誤只會發生在 Windows 嗎?
這篇筆記的修復方式主要針對 Windows Anaconda。macOS 或 Linux 也可能遇到 SSL 相關問題,但處理方向通常會變成 shell activation、系統憑證、OpenSSL 套件或 Conda 安裝完整性,不一定適用複製 Windows DLL 的方式。
參考資料
- conda documentation:Troubleshooting - SSL connection errors(存取日期:2026-08-28)
- Anaconda Knowledge Base:Openssl error(更新日期:2026-04-17,存取日期:2026-08-28)
- GitHub conda issue:Conda SSL Error: OpenSSL appears to be unavailable on this machine(開啟日期:2022-10-17,存取日期:2026-08-28)
- Anaconda Forum:Getting Started Conda Workflow tutorial - CondaSSLError(討論日期:2022-12,存取日期:2026-08-28)
最後更新
本文最後更新於 2026-08-28。初次發布於 2023-08-23,本文保留 Conda 缺少 OpenSSL、無法安裝套件、`libcrypto-1_1-x64.dll`、`libssl-1_1-x64.dll` 與 Windows Anaconda 環境修復流程,並補上 Answer Blocks、FAQ、參考資料與延伸閱讀。
關於作者 {#author}
Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。
首次發布:2023-08-23
