我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。
发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。
我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。
发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。
当前回答
这个问题是由于不同的版本导致的——例如,如果安装在你机器上的Python安装在一个名为path_to_lib/python3.6的文件夹中,但你的笔记本电脑运行的是Python 3——命名中的空格很重要!
如何解决?
创建新的jupyter笔记本时,只需选择与您的版本相同的Python(注意空格!)见附图。
其他回答
发生在我使用目录utils的时候。我试图导入这个目录为:
from utils import somefile
Utils在python中已经是一个包。只需将目录名更改为不同的名称,就可以正常工作。
我有一个类似的问题与我的Jupyter实验室设置,我通过检查Jupyter实验室日志打开解决。这告诉我,虚拟环境(pipenv)无法定位Jupyter Lab,所以它使用了一个共享版本(来自Python的早期安装)。
我创建了一个requirements.txt文件,发现我没有在这个新环境中安装Jupyter Lab。安装它解决了导入错误。
这对我来说很有效:我只是在笔记本中更改了我的工作目录
import os
os.chdir("my/path/to/module")
os.getcwd()
这种错误很可能是由于python版本冲突造成的。例如,如果你的应用程序只在python 3上运行,而你也有python 2,那么最好指定使用哪个版本。 例如使用
python3 .....
而不是
python
主要原因是系统。Python和IPython的路径不同。
请参考lucypark link,解决方案适合我的情况。它发生在安装opencv by
Conda安装opencv
在iPython中导入错误,有三个步骤来解决这个问题:
import cv2
ImportError: ...
1. 使用以下命令检查Python和iPython中的路径
import sys
sys.path
你会发现Python和Jupyter的结果不同。第二步,只需使用sys.path.append通过尝试和错误来修复错过的路径。
2. 临时解决方案
在iPython:
import sys
sys.path.append('/home/osboxes/miniconda2/lib/python2.7/site-packages')
import cv2
ImportError: . .问题解决了
3.永久的解决方案
创建一个iPython配置文件并设置初始追加:
在bash shell中:
ipython profile create
... CHECK the path prompted , and edit the prompted config file like my case
vi /home/osboxes/.ipython/profile_default/ipython_kernel_config.py
在vi中,在文件后面追加:
c.InteractiveShellApp.exec_lines = [
'import sys; sys.path.append("/home/osboxes/miniconda2/lib/python2.7/site-packages")'
]
DONE