Anaconda环境Jupyter Notebook导入molpx遇FileNotFoundError求解决
问题:Anaconda环境Jupyter Notebook导入molpx报FileNotFoundError
在Anaconda的santiago环境下的Jupyter Notebook中尝试使用molpx库,已在Notebook内通过pip完成安装并重启内核,但导入molpx时触发FileNotFoundError。此前尝试通过conda安装ipympl解决,问题仍存在。
错误栈信息
FileNotFoundError Traceback (most recent call last) Cell In[12], line 1 ----> 1 import molpx 2 import warnings 3 get_ipython().run_line_magic('matplotlib', 'ipympl') File ~\anaconda3\envs\santiago\Lib\site-packages\molpx\__init__.py:162 159 return True 161 # Try to help the user getting molpx working out of the box and raise an Exception if molpx wont work --> 162 if not all(_get_extension_status().values()): 163 for _ext, _enabled in _get_extension_status().items(): 164 if not _enabled: File ~\anaconda3\envs\santiago\Lib\site-packages\molpx\__init__.py:119, in _get_extension_status(ext_list) 111 r""" 112 Guess the status of the extensions in ext_list. the correct way of doing this 113 would be using notebook.nbextensions, but you need paths to the extensions 114 and I dont want to go there 115 :return: dictionary with extensions in ext_list as keys and True or False as values 116 """ 117 enabled_exts = {key:None for key in ext_list} --> 119 lines = _subprocess.check_output(("jupyter-nbextension", "list"), stderr=_subprocess.DEVNULL) 120 for ext in enabled_exts.keys(): 121 for iline in lines.decode().splitlines(): File ~\anaconda3\envs\santiago\Lib\subprocess.py:466, in check_output(timeout, *popenargs, **kwargs) 463 empty = b'' 464 kwargs['input'] = empty --> 466 return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, 467 **kwargs).stdout File ~\anaconda3\envs\santiago\Lib\subprocess.py:548, in run(input, capture_output, timeout, check, *popenargs, **kwargs) 545 kwargs['stdout'] = PIPE 546 kwargs['stderr'] = PIPE --> 548 with Popen(*popenargs, **kwargs) as process: 549 try: 550 stdout, stderr = process.communicate(input, timeout=timeout) File ~\anaconda3\envs\santiago\Lib\subprocess.py:1026, in Popen.__init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, user, group, extra_groups, encoding, errors, text, umask, pipesize, process_group) 1022 if self.text_mode: 1023 self.stderr = io.TextIOWrapper(self.stderr, 1024 encoding=encoding, errors=errors) --> 1026 self._execute_child(args, executable, preexec_fn, close_fds, 1027 pass_fds, cwd, env, 1028 startupinfo, creationflags, shell, 1029 p2cread, p2cwrite, 1030 c2pread, c2pwrite, 1031 errread, errwrite, 1032 restore_signals, 1033 gid, gids, uid, umask, 1034 start_new_session, process_group) 1035 except: 1036 # Cleanup if the child failed starting. 1037 for f in filter(None, (self.stdin, self.stdout, self.stderr)): File ~\anaconda3\envs\santiago\Lib\subprocess.py:1538, in Popen._execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_gid, unused_gids, unused_uid, unused_umask, unused_start_new_session, unused_process_group) 1536 # Start the process 1537 try: --> 1538 hp, ht, pid, tid = _winapi.CreateProcess(executable, args, 1539 # no special security 1540 None, None, 1541 int(not close_fds), 1542 creationflags, 1543 env, 1544 cwd, 1545 startupinfo) 1546 finally: 1547 # Child is launched. Close the parent's copy of those pipe 1548 # handles that only the child should have open. You need (...) 1551 # pipe will not close when the child process exits and the 1552 # ReadFile will hang. 1553 self._close_pipe_fds(p2cread, p2cwrite, 1554 c2pread, c2pwrite, 1555 errread, errwrite) FileNotFoundError: [WinError 2] 系统找不到指定的文件。
解决方案
核心原因
molpx初始化时会调用jupyter-nbextension list命令检查扩展状态,但当前Anaconda环境的PATH中找不到该可执行文件,或者相关扩展包未正确安装。
标准解决步骤
- 激活目标Anaconda环境:打开Anaconda Prompt,执行
conda activate santiago - 安装jupyter扩展相关依赖包:
conda install -c conda-forge jupyter_contrib_nbextensions - 验证命令可用性:执行
jupyter-nbextension --version,若能输出版本号则说明环境正常 - 重启Jupyter Notebook后再次尝试导入molpx
备选方案(跳过扩展检查)
如果上述步骤无效,可直接修改molpx的初始化文件绕过扩展检查:
- 找到molpx的初始化文件,路径为
~\anaconda3\envs\santiago\Lib\site-packages\molpx\__init__.py - 注释掉第162-164行的代码:
# if not all(_get_extension_status().values()): # for _ext, _enabled in _get_extension_status().items(): # if not _enabled: - 保存文件后重启Jupyter内核,重新导入molpx
内容的提问来源于stack exchange,提问作者Ludovica Aisa
相关产品推荐
相关产品推荐

