我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。
发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。
我试图运行一个脚本,启动,除其他外,一个python脚本。我得到一个ImportError:没有模块命名为…但是,如果我启动ipython并通过解释器以相同的方式导入相同的模块,则该模块将被接受。
发生了什么事,我该怎么解决?我试图理解python如何使用PYTHONPATH,但我完全困惑了。任何帮助都将不胜感激。
当前回答
我是这样解决的:
import os
import sys
module_path = os.path.abspath(os.getcwd() + '\\..')
if module_path not in sys.path:
sys.path.append(module_path)
其他回答
这个问题是由于不同的版本导致的——例如,如果安装在你机器上的Python安装在一个名为path_to_lib/python3.6的文件夹中,但你的笔记本电脑运行的是Python 3——命名中的空格很重要!
如何解决?
创建新的jupyter笔记本时,只需选择与您的版本相同的Python(注意空格!)见附图。
这对我来说很有效:我只是在笔记本中更改了我的工作目录
import os
os.chdir("my/path/to/module")
os.getcwd()
发生在我使用目录utils的时候。我试图导入这个目录为:
from utils import somefile
Utils在python中已经是一个包。只需将目录名更改为不同的名称,就可以正常工作。
有一个类似的问题,通过调用python3而不是python来修复它,我的模块是Python3.5。
我是这样解决的:
import os
import sys
module_path = os.path.abspath(os.getcwd() + '\\..')
if module_path not in sys.path:
sys.path.append(module_path)