Cod*_*lot 118 python ipython importerror jupyter-notebook
我正在尝试运行一个启动python脚本的脚本.我得到一个ImportError:没有名为...的模块,但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则接受该模块.
发生了什么,我该如何解决?我试图理解python如何使用PYTHONPATH,但我完全糊涂了.任何帮助将非常感谢.
tyl*_*eha 158
出现此问题的原因是命令行IPython解释器使用当前路径的方式与单独进程的方式(无论是IPython笔记本,外部进程等).IPython将查找要导入的模块,这些模块不仅可以在sys.path中找到,还可以在当前工作目录中找到.从命令行启动解释器时,您正在操作的当前目录与您在ipython中启动的目录相同.如果您运行
import os
os.getcwd()
Run Code Online (Sandbox Code Playgroud)
你会看到这是真的.
但是,假设您正在使用ipython笔记本,运行os.getcwd()
并且您当前的工作目录是您在ipython_notebook_config.py文件中告知笔记本操作的文件夹(通常使用该c.NotebookManager.notebook_dir
设置).
解决方案是为python解释器提供路径到您的模块.最简单的解决方案是将该路径附加到sys.path列表中.在您的笔记本中,首先尝试:
import sys
sys.path.append('my/path/to/module/folder')
import module-of-interest
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,那么你手上的问题与导入路径无关,你应该提供更多关于你的问题的信息.
更好(也更永久)的解决方法是设置PYTHONPATH,它为解释器提供了python包/模块的其他目录.将PYTHONPATH编辑或设置为全局var是依赖于os的,这里将详细讨论Unix或Windows.
Moh*_*med 14
在__init__.py
运行python项目时,只需在显示错误的文件夹下创建一个名为空的python文件.
z0r*_*z0r 11
确保他们都使用相同的解释器.在Ubuntu上发生了这件事:
$ ipython3 -c 'import sys; print(sys.version)'
3.4.2 (default, Jun 19 2015, 11:34:49) \n[GCC 4.9.1]
$ python3 -c 'import sys; print(sys.version)'
3.3.0 (default, Nov 27 2012, 12:11:06) \n[GCC 4.6.3]
Run Code Online (Sandbox Code Playgroud)
而且sys.path
是两个解释不同.为了解决这个问题,我删除了Python 3.3.
这样做sys.path.append('my-path-to-module-folder')
会有效,但为了避免每次想要使用模块时都必须在IPython中执行此操作,您可以添加export PYTHONPATH="my-path-to-module-folder:$PYTHONPATH"
到您的~/.bash_profile
文件中.
主要原因是Python和IPython的sys.paths不同.
请参考lucypark链接,该解决方案适用于我的情况.安装opencv时会发生这种情况
conda install opencv
在iPython中出现导入错误,有三个步骤可以解决这个问题:
import cv2
ImportError: ...
Run Code Online (Sandbox Code Playgroud)
1.使用以下命令检查Python和iPython中的路径
import sys
sys.path
Run Code Online (Sandbox Code Playgroud)
你会发现它们的结果不同.第二步,只需sys.path.append
通过try-and-error修复错过的路径.
2.临时解决方案
在iPython中:
import sys
sys.path.append('/home/osboxes/miniconda2/lib/python2.7/site-packages')
import cv2
Run Code Online (Sandbox Code Playgroud)
该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
Run Code Online (Sandbox Code Playgroud)
在vi中,附加到文件:
c.InteractiveShellApp.exec_lines = [
'import sys; sys.path.append("/home/osboxes/miniconda2/lib/python2.7/site-packages")'
]
Run Code Online (Sandbox Code Playgroud)
DONE
归档时间: |
|
查看次数: |
217982 次 |
最近记录: |