我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。
发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。
我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。
发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。
当前回答
确保它们都使用相同的解释器。我在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]
和系统。两位译员的路线不同。为了解决这个问题,我删除了Python 3.3。
其他回答
我发现这个问题的解决方案在这里有大量的文档:
https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/
基本上,你必须在Jupyter环境中安装包,发出shell命令,比如:
!{sys.executable} -m pip install numpy
请查看上面的链接,以获得权威的完整答案。
删除pathlib并重新安装。删除siteppackages文件夹中的pathlib,使用pip命令重新安装pathlib包:
pip install pathlib
这种错误很可能是由于python版本冲突造成的。例如,如果你的应用程序只在python 3上运行,而你也有python 2,那么最好指定使用哪个版本。 例如使用
python3 .....
而不是
python
如果有人在MSVS Code中使用conda和Jupyter Notebook时遇到这个问题,解决方案是确保您使用了正确的内核。内核位于界面右上角的一个框中,看起来像这样:
我将我的Python版本指向与我的应用程序路径匹配的Python版本——问题解决了!
我发现了这种差异的另一个来源:
我在本地和virtualenvs中都安装了ipython。我的问题是,在一个带有ipython的新创建的virtualenv中,系统ipython被选中,这与virtualenv中的python和ipython是不同的版本(2.7。X vs. a . 3. X),然后是笑声。
我认为当你在virtualenv/bin中安装二进制文件时,聪明的做法是立即为你正在使用的任何shell运行rehash或类似的程序,这样正确的python/ipython就会被拾取。(必须检查是否有合适的pip安装后挂钩…)