我已将jupyter配置为从远程计算机使用,并在初始anaconda设置时为其设置密码。然后在修复this issue之后,我被另一个陷阱困住了sys.path
和{/opt/anaconda3
中的所有用户安装的,我正在为我的程序使用一个zud
环境
一旦上述问题得到解决,我试图在jupyter中import igraph
,但它给出了ModuleNotFoundError
如下所示:
import igraph
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-73ffca960e68> in <module>
----> 1 import igraph
ModuleNotFoundError: No module named 'igraph'
然后,我很快使用我的环境zud
检查了以下细节,这些细节是正确的
(zud) zuddler@silp252-dl360:~$ which python
/home/zuddler/.conda/envs/zud/bin/python
(zud) zuddler@silp252-dl360:~$ which ipython
/home/zuddler/.conda/envs/zud/bin/ipython
(zud) zuddler@silp252-dl360:~$ which jupyter
/home/zuddler/.conda/envs/zud/bin/jupyter
(zud) zuddler@silp252-dl360:~$ which conda
/opt/anaconda3/bin/conda
(zud) zuddler@silp252-dl360:~$ conda env list
# conda environments:
#
zud * /home/zuddler/.conda/envs/zud
base /opt/anaconda3
然后我在python,ipython和jupyter笔记本/实验室中检查了sys.path
和sys.executable
:
Python中的:
>>> import sys
>>> sys.path
['', '/home/zuddler/.conda/envs/zud/lib/python39.zip', '/home/zuddler/.conda/envs/zud/lib/python3.9', '/home/zuddler/.conda/envs/zud/lib/python3.9/lib-dynload', '/home/zuddler/.conda/envs/zud/lib/python3.9/site-packages']
>>> sys.executable
'/home/zuddler/.conda/envs/zud/bin/python'
在ipython中:
**In [1]: import sys
In [2]: sys.path
Out[2]:
['/home/zuddler/.conda/envs/zud/bin',
'/home/zuddler/.conda/envs/zud/lib/python39.zip',
'/home/zuddler/.conda/envs/zud/lib/python3.9',
'/home/zuddler/.conda/envs/zud/lib/python3.9/lib-dynload',
'',
'/home/zuddler/.conda/envs/zud/lib/python3.9/site-packages',
'/home/zuddler/.conda/envs/zud/lib/python3.9/site-packages/IPython/extensions',
'/home/zuddler/.ipython']
In [3]: sys.executable
Out[3]: '/home/zuddler/.conda/envs/zud/bin/python'**
在Jupyter笔记本/实验室中:
[1]: import sys
[2]: sys.path
[2]:
['/home/zuddler/python scripts',
'/opt/anaconda3/lib/python38.zip',
'/opt/anaconda3/lib/python3.8',
'/opt/anaconda3/lib/python3.8/lib-dynload',
'',
'/opt/anaconda3/lib/python3.8/site-packages',
'/opt/anaconda3/lib/python3.8/site-packages/IPython/extensions',
'/home/zuddler/.ipython']
[3]: sys.executable
[3]: '/opt/anaconda3/bin/python'
sys.path
和sys.executable
在Jupyter笔记本/实验室中不同,但在Python和ipython中是正确的
另外,为了确认当前jupyter是否正在运行,我在jupyter笔记本中运行了!which jupyter
,并收到了/home/zuddler/.conda/envs/zud/bin/jupyter
,它确认了正确的jupyter笔记本正在运行
补救措施1:我尝试了here和here提到的修复方法,并在/home/zuddler/.ipython/profile_default/ipython_config.py
文件中添加了以下行
c.InteractiveShellApp.exec_lines = [
'import sys; sys.path.append("/home/zuddler/.conda/envs/zud/lib/python3.9/site-packages")'
]
然后重新启动jupyter笔记本并尝试再次导入igraph,得到的结果略有不同
import igraph
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-73ffca960e68> in <module>
----> 1 import igraph
~/.conda/envs/zud/lib/python3.9/site-packages/igraph/__init__.py in <module>
32 # pylint: disable-msg=W0401
33 # W0401: wildcard import
---> 34 from igraph._igraph import *
35 from igraph.clustering import *
36 from igraph.cut import *
ModuleNotFoundError: No module named 'igraph._igraph'
我快速地检查了sys.path
和sys.executable
:
[1]: sys.path
[1]:
['/home/zuddler/python scripts',
'/opt/anaconda3/lib/python38.zip',
'/opt/anaconda3/lib/python3.8',
'/opt/anaconda3/lib/python3.8/lib-dynload',
'',
'/opt/anaconda3/lib/python3.8/site-packages',
'/opt/anaconda3/lib/python3.8/site-packages/IPython/extensions',
'/home/zuddler/.ipython',
'/home/zuddler/.conda/envs/zud/lib/python3.9/site-packages']
[2]: sys.executable
[2]: '/opt/anaconda3/bin/python'
这似乎是一条死胡同,所以我撤销了这个修正
补救措施2:我尝试了fix given on this post并在kernel.json中替换了正确的可执行路径
列出的内核包括:
(zud) zuddler@silp252-dl360:~$ jupyter kernelspec list
Available kernels:
python3 /opt/anaconda3/share/jupyter/kernels/python3
我在/opt/anaconda3/share/jupyter/kernels/python3/kernel.json
中做了以下更改
{
"argv": [
"/opt/anaconda3/bin/python","/home/zuddler/.conda/envs/zud/bin/python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}
在那之后,我重新启动了jupyter笔记本/实验室,它在zud
环境下工作,但我注意到在base
环境中,它导入了igraph
,甚至没有安装在base
中。我从中检查了以下值,which jupyter
对于base
是正确的
[1]: !which jupyter
[1]: /opt/anaconda3/bin/jupyter
但它从{
[2]: sys.path
[2]:
['/home/zuddler/python scripts',
'/home/zuddler/.conda/envs/zud/lib/python39.zip',
'/home/zuddler/.conda/envs/zud/lib/python3.9',
'/home/zuddler/.conda/envs/zud/lib/python3.9/lib-dynload',
'',
'/home/zuddler/.conda/envs/zud/lib/python3.9/site-packages',
'/home/zuddler/.conda/envs/zud/lib/python3.9/site-packages/IPython/extensions',
'/home/zuddler/.ipython']
[3]: sys.executable
[3]: '/home/zuddler/.conda/envs/zud/bin/python'
这又是一条死胡同,所以我收回了这个修正
补救措施3:从this post应用以下步骤也无法解决问题,并给出了错误的sys.path
和sys.executable
- Deleting IPython and Jupyter from the system
rm -rf ~/.local/share/ipython
- Reinstall IPython and Jupyter
补救措施4:我尝试按照{a6}中的建议打开{
其他补救措施:我读了this,但没有找到解决办法
PS:我注意到this post也提到了与我相关的问题,但没有得到解决
我将对此进行更多的研究,以期找到解决方案,如果您能提供解决方案,我将不胜感激
我也有这个问题很久了。我是这样解决的
创建并进入虚拟环境后,您可能会执行以下操作
pip install ipykernel
ipython kernel install user name=myenv
以使其在jupyter实验室/笔记本中可见这个ipykernel映射文件位于
/home/user/.local/share/jupyter/kernels/myenv/kernel.json
它应该是这样的:
这里的问题是,出于某种原因,虚拟环境python被映射到系统python。您希望将python指针更改为指向虚拟环境python,这类似于
/home/user/.virtualenvs/myenv/bin/python3
TL;博士:
如果其中有
/usr/bin/python3
,则将其更改为/home/user/.virtualenvs/myenv/bin/python3
您可能需要重新启动Jupyter实验室/笔记本,以使更改生效
我不完全理解为什么有时会发生,有时不会,但希望这个修复也能帮助你
相关问题 更多 >
编程相关推荐