the*_*ngh 6 python ipython sys jupyter jupyter-notebook
我已将 jupyter 配置为从远程计算机使用,并在初始 anaconda 设置时为其设置密码。然后解决这个问题后,我又陷入了另一个问题。在jupyter中不正确sys.path,sys.executable但在python和ipython中正确。请参阅下面的详细信息。Anaconda3 已为所有用户安装,并且我正在为我的程序使用一个环境。/opt/anaconda3zud
解决上述问题后,我尝试import igraph在jupyter中进行操作,但结果ModuleNotFoundError如下:
import igraph
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-73ffca960e68> in <module>
----> 1 import igraph
ModuleNotFoundError: No module named 'igraph'
Run Code Online (Sandbox Code Playgroud)
然后我很快使用我的环境检查了以下详细信息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
Run Code Online (Sandbox Code Playgroud)
然后我检查了sys.pathpython 、 ipython和jupyter notebook/lab: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'
Run Code Online (Sandbox Code Playgroud)
在 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'**
Run Code Online (Sandbox Code Playgroud)
在 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'
Run Code Online (Sandbox Code Playgroud)
sys.pathsys.executable在Jupyter Notebook/Lab中不同,但在Python和ipython中是正确的。
另外,为了确认当前的 jupyter 是否正在运行,我!which jupyter在 jupyter 笔记本中运行并收到/home/zuddler/.conda/envs/zud/bin/jupyter确认正确的 jupyter 笔记本正在运行的信息。
补救措施 1:我尝试了此处和此处提到的修复,并在/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")'
]
Run Code Online (Sandbox Code Playgroud)
然后重新启动jupyter笔记本并尝试再次导入igraph,结果略有不同 ModuleNotFoundError
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'
Run Code Online (Sandbox Code Playgroud)
我很快检查了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'
Run Code Online (Sandbox Code Playgroud)
这似乎是一个死胡同,所以我回滚了这个修复。
补救措施 2:我尝试了这篇文章中给出的修复,并替换了 kernel.json 中正确的可执行路径
列出的内核有:
(zud) zuddler@silp252-dl360:~$ jupyter kernelspec list
Available kernels:
python3 /opt/anaconda3/share/jupyter/kernels/python3
Run Code Online (Sandbox Code Playgroud)
我做了以下更改/opt/anaconda3/share/jupyter/kernels/python3/kernel.json
{
"argv": [
Run Code Online (Sandbox Code Playgroud)
“/opt/anaconda3/bin/python”,“/home/zuddler/.conda/envs/zud/bin/python”,
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}
Run Code Online (Sandbox Code Playgroud)
之后,我重新启动了 jupyter 笔记本/实验室,它适用于环境zud,但我注意到,对于base它导入的环境igraph,它甚至没有安装在base. 我从他们那里检查了以下值,which jupyter是正确的base
[1]: !which jupyter
[1]: /opt/anaconda3/bin/jupyter
Run Code Online (Sandbox Code Playgroud)
但它正在回升,sys.path这意味着每个人都将被迫使用环境。sys.executablezudzud
[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'
Run Code Online (Sandbox Code Playgroud)
这又是一个死胡同,所以我回滚了这个修复。
补救措施 3:应用这篇文章中的以下步骤也没有解决问题,并给出了错误sys.path和sys.executable
- 从系统中删除 IPython 和 Jupyter
rm -rf ~/.local/share/ipython- 重新安装 IPython 和 Jupyter
补救措施4:我尝试~/.conda/envs/zud/bin/jupyter lab --no-browser按照这篇文章中的建议打开,但它也给出了错误sys.path和sys.executable。
其他补救措施:我读过这篇文章,但没有找到解决方案。
PS:我注意到这篇文章也提到了一个与我相关的问题,但没有得到解决。
我将对此进行更多研究,希望找到解决方案,如果您能提供解决方案,我将不胜感激。
小智 4
我也遇到这个问题有一段时间了。这是我解决问题的方法。
创建并进入虚拟环境后,您可能会执行以下操作
pip install ipykernel
ipython kernel install --user --name=myenv为了使其在 jupyter 实验室/笔记本中可见。
这个 ipykernel 映射文件位于/home/user/.local/share/jupyter/kernels/myenv/kernel.json
它应该看起来像这样:
{
"argv": [
"/usr/bin/python3",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"language": "python",
"display_name": "myenv"
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是虚拟环境 python 由于某种原因映射到系统 python。您想要更改 python 指针以指向您的虚拟环境 python,这类似于/home/user/.virtualenvs/myenv/bin/python3.
长话短说:
cat /home/user/.local/share/jupyter/kernels/myenv/kernel.json
Run Code Online (Sandbox Code Playgroud)
如果/usr/bin/python3里面有,则将其更改为/home/user/.virtualenvs/myenv/bin/python3
您可能需要重新启动 Jupyter Lab/Notebook 才能使更改生效。
我不完全理解为什么有时会发生有时不会,但希望这个修复也能对您有所帮助。
| 归档时间: |
|
| 查看次数: |
3061 次 |
| 最近记录: |