為了防止python環境變亂,於是新建子環境進行不同項目操作。最近想使用jupyter切換環境進行操作。遇到了下列問題:
1. 安裝插件,使jupyter可以切換環境
2. ImportError: DLL load failed: 找不到指定的模塊。
3. ImportError: DLL load failed: 找不到指定的程序。
一、安裝插件
想要在jupyter下切換環境運行,需要安裝以下插件:
#有兩個環境,tf1,和tf2,激活
conda activate tf1
#安裝ipython kernel
pip install ipykernel
#鏈接當前環境到jupyter
python -m ipykernel install --user --name=tf1
#然后是另一個環境,做同樣操作
conda activate tf2
pip install ipykernel
python -m ipykernel install --user --name=tf2
Anaconda Prompt
中的切換界面:
我新建的環境名稱是:caffe-fzp
,安裝好插件后,即可在jupyter的Homepage
中看見:
點擊新的環境caffe-fzp
即可進入子環境:
But!運行過程中,。陸續出現了不少問題,下面是問題記錄:
二、ImportError: DLL load failed: 找不到指定的模塊。
報錯的提示如下:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\Scripts\jupyter-notebook-script.py", line 6, in <module>
from notebook.notebookapp import main
File "C:\ProgramData\Anaconda3\lib\site-packages\notebook\notebookapp.py", line 47, in <module>
from zmq.eventloop import ioloop
File "C:\ProgramData\Anaconda3\lib\site-packages\zmq\__init__.py", line 47, in <module>
from zmq import backend
File "C:\ProgramData\Anaconda3\lib\site-packages\zmq\backend\__init__.py", line 40, in <module>
reraise(*exc_info)
File "C:\ProgramData\Anaconda3\lib\site-packages\zmq\utils\sixcerpt.py", line 34, in reraise
raise value
File "C:\ProgramData\Anaconda3\lib\site-packages\zmq\backend\__init__.py", line 27, in <module>
_ns = select_backend(first)
File "C:\ProgramData\Anaconda3\lib\site-packages\zmq\backend\select.py", line 27, in select_backend
mod = __import__(name, fromlist=public_api)
File "C:\ProgramData\Anaconda3\lib\site-packages\zmq\backend\cython\__init__.py", line 6, in <module>
from . import (constants, error, message, context,
ImportError: DLL load failed: 找不到指定的模塊。
- 問題原因:
zmq
包是用於連接的,若出現問題,會導致連接不上服務器。我的問題是版本不匹配。 - 解決辦法:
- 切換到子環境,再卸載舊版本
pip uninstall pyzmq
從截圖中即可看出,舊版本是17.1.2。
- 在子環境里,重新下載新版本
pip install pyzmq
從截圖中即可看出,安裝的新版本是18.1.1。
Bingo!ImportError: DLL load failed: 找不到指定的模塊。
問題到這里就解決啦。
如果和我一樣又出現了ImportError: DLL load failed: 找不到指定的程序。
問題,繼續看下一點。
三、ImportError: DLL load failed: 找不到指定的程序
[I 10:41:35.455 NotebookApp] KernelRestarter: restarting kernel (4/5), new random ports
Traceback (most recent call last):
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\ipykernel_launcher.py", line 16, in <module>
app.launch_new_instance()
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\traitlets\config\application.py", line 663, in launch_instance
app.initialize(argv)
File "<D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\decorator.py:decorator-gen-125>", line 2, in initialize
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\traitlets\config\application.py", line 87, in catch_config_error
return method(app, *args, **kwargs)
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\ipykernel\kernelapp.py", line 550, in initialize
self.write_connection_file()
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\ipykernel\kernelapp.py", line 227, in write_connection_file
iopub_port=self.iopub_port, control_port=self.control_port)
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\jupyter_client\connect.py", line 141, in write_connection_file
with secure_write(fname) as f:
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\contextlib.py", line 112, in __enter__
return next(self.gen)
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\jupyter_core\paths.py", line 430, in secure_write
win32_restrict_file_to_user(fname)
File "D:\InstallSoftware\Anaconda\envs\caffe-fzp\lib\site-packages\jupyter_core\paths.py", line 361, in win32_restrict_file_to_user
import win32api
ImportError: DLL load failed: 找不到指定的程序。
emm,原本參考其他博客,python3.6版本,出現這個是版本太高(224、225發布的有問題),卸載后,安裝pip install pywin32==223
即可。但是我的是python3.7版本。emm,我就試着卸載
再安裝:pip install pywin32
(自動確認的版本)。問題解決了。。其實版本也沒有變,emm,佛學!若知詳情,希望能夠不吝賜教。