問題描述
Anaconda prompt Error,其他正常
開機后調(diào)Anaconda prompt , 顯示" failed to create process. ",但jupyter/ spyder都可以正常運行
Invoke-Expression : 無法將參數(shù)綁定到參數(shù)“Command”,因為該參數(shù)為空字符串。
所在位置 D:\Program Files\anaconda3\shell\condabin\Conda.psm1:101 字符: 36
+ Invoke-Expression -Command $activateCommand;
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Invoke-Expression],ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Invo
keExpressionCommand
搜索原因
- 檢索一番,大概是因為anaconda安裝路徑包含空格
- 我個人感覺是anaconda3\Scripts\conda.exe損壞
- conda.exe執(zhí)行的內(nèi)容應該是 python解釋器+py腳本,所以空格問題應該是出在python解釋器路徑上
- 嘗試在anaconda3\Scripts\文件夾中用cmd執(zhí)行conda-build.exe,報python解釋器路徑錯誤,在conda-build-script.py腳本第一行添加帶雙引號的解釋器路徑后,運行conda-build.exe成功;同理pip-script.py 和 pip.exe也成功...
#!"D:\Program Files (x86)\anaconda3\python.exe"
- 但這在conda-script.py conda-env-script.py等腳本中卻沒有成功
- 于是我放棄了,Anaconda3已經(jīng)裝了一年了,今天這個error來的太突然...突然就不接受我的空格了?
解決方案
Jupyter Lab快捷方式
我個人喜歡用Jupyter Lab工作,由于懶每次啟服務都在Anaconda prompt中敲命令...實際上完全可以創(chuàng)建快捷方式,就像Jupyter Notebook一樣
我的環(huán)境是win10
- 在win app 界面中找到Anaconda3->Jupyter Notebook->打開文件位置
- 復制一份Jupyter Notebook的快捷方式,重命名為Jupyter Lab,
- 選中Jupyter Lab快捷方式文件,右鍵屬性,修改目標內(nèi)容
# 原來的:jupyter-notebook-script.py
# 替換為:jupyter-lab-script.py
# 最后一個參數(shù)默認工作路徑為"%USERPROFILE%/",根據(jù)自己的情況修改,比如我的工作路徑是D盤,就修改為"D:/"
管理環(huán)境
實際上這個Error對我的影響只有conda啟不起來,沒辦法進行包和環(huán)境的管理,其他我需要用的功能都正常。所以我覺得沒必要重裝Anaconda3,不光是env的問題,JupyterLab的插件等都要重新配置。所以我只需要裝個miniconda來實現(xiàn)環(huán)境管理就好了
miniconda裝好后(不含空格的路徑)啟一個Anaconda prompt
conda env list # 可以找到之前的env
conda activate "D:\Program Files (x86)\anaconda3" # 對應之前的base
conda create -n old_py27 --clone "D:\Program Files (x86)\anaconda3\envs\py27" # 復制之前的環(huán)境到miniconda中管理
conda activate base # 切換都任意環(huán)境
python -m ipykernel install --user --name=new_base # 配置給jupyter lab調(diào)用該環(huán)境
重裝Anaconda3
- 其實重裝Anaconda3(不含空格的路徑) 應該是最穩(wěn)妥的, 畢竟jupyter 也有很多命令由conda管理...
- 安裝好后可以直接將原"anaconda3\env"下的文件打包,粘貼到新的"anaconda3\env"下,然后卸載原anaconda3...
- 如果原base環(huán)境也很重要就conda create -n old_base --clone "path\to\anaconda3" 克隆后再卸載。
更好的解決方案
到現(xiàn)在都沒有檢索到更好的解決方案來解決原來Anaconda prompt Error的問題,實際上報錯已經(jīng)很明顯了,但就是不知道怎么修改Conda.psm1... 講道理報錯這行"Command"的內(nèi)容就是調(diào)用"anaconda3\Scripts\conda.exe",而conda.exe運行的應該就是"python解釋器路徑 + py腳本"... 在"anaconda3\Scripts\conda-script.py"中添加帶引號路徑也沒能解決。
結(jié)語
我這一天非常抓狂,檢索解決方法的過程中發(fā)現(xiàn)很多人都拋出相似問題,但都沒有結(jié)果,因此記錄一下希望能幫助到別人。如果有大佬指點,那簡直求之不得。