我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。

发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。


当前回答

如果有人在MSVS Code中使用conda和Jupyter Notebook时遇到这个问题,解决方案是确保您使用了正确的内核。内核位于界面右上角的一个框中,看起来像这样:

我将我的Python版本指向与我的应用程序路径匹配的Python版本——问题解决了!

其他回答

这对我来说很有效:我只是在笔记本中更改了我的工作目录

import os

os.chdir("my/path/to/module")
os.getcwd() 

无需脚本的解决方案:

打开Spyder -> Tools -> PYTHONPATH管理器 通过点击“Add Path”添加Python路径。 例如:C: \ \用户用户\ AppData \本地Python \程序\ \ Python37 \ Lib \网站” 点击“同步…”允许其他程序(例如Jupyter Notebook)使用步骤2中设置的pythonpaths。 重启Jupyter,如果它是打开的

我发现了这种差异的另一个来源:

我在本地和virtualenvs中都安装了ipython。我的问题是,在一个带有ipython的新创建的virtualenv中,系统ipython被选中,这与virtualenv中的python和ipython是不同的版本(2.7。X vs. a . 3. X),然后是笑声。

我认为当你在virtualenv/bin中安装二进制文件时,聪明的做法是立即为你正在使用的任何shell运行rehash或类似的程序,这样正确的python/ipython就会被拾取。(必须检查是否有合适的pip安装后挂钩…)

发生在我使用目录utils的时候。我试图导入这个目录为:

from utils import somefile

Utils在python中已经是一个包。只需将目录名更改为不同的名称,就可以正常工作。

import sys
sys.path.append('/Users/{user}/Library/Python/3.7/lib/python/site-packages')
import ta