Python 使用Atom时没有名为email_的模块预处理错误

Python 使用Atom时没有名为email_的模块预处理错误,python,atom-editor,Python,Atom Editor,我目前在使用Atom运行python代码时遇到了一些困难,否则在通过命令提示符启动时,这些代码会正常工作。对于那些不熟悉Udacity机器学习介绍的人,“电子邮件预处理”模块位于“…\naive\u bayes\tools”目录中 代码: 每当我运行 nb\u author\u id.py使用以下命令通过命令提示符创建文件: python2 nb_author_id.py 在D:\Misiek\Pulpit\python\ud120 projects master\naive\u bayes目

我目前在使用Atom运行python代码时遇到了一些困难,否则在通过命令提示符启动时,这些代码会正常工作。对于那些不熟悉Udacity机器学习介绍的人,“电子邮件预处理”模块位于“…\naive\u bayes\tools”目录中

代码:

每当我运行 nb\u author\u id.py使用以下命令通过命令提示符创建文件:

python2 nb_author_id.py
D:\Misiek\Pulpit\python\ud120 projects master\naive\u bayes目录中,它工作正常。但是,如果要通过Atom(使用Atom runner)运行nb\u author\u id.py文件,我会收到错误消息:

Traceback (most recent call last):
  File "D:\Misiek\Pulpit\python\ud120-projects-master\naive_bayes\nb_author_id.py", line 17, in <module>
    from email_preprocess import preprocess
ImportError: No module named email_preprocess
回溯(最近一次呼叫最后一次):
文件“D:\Misiek\Pulpit\python\ud120 projects master\naive\u bayes\nb\u author\u id.py”,第17行,在
从电子邮件预处理导入预处理
ImportError:没有名为email_preprocess的模块

知道为什么它通过命令提示符而不是Atom工作吗?

将该目录添加到PYTHONPATH环境变量中,这样就不必从同一目录导入该目录。通过添加
D:\Misiek\Pulpit\python\ud120 projects master\naive\u bayes将该目录追加到末尾


最好不要在
sys.path
中使用相对路径。当程序运行时,您永远不知道当前目录是什么。最有可能的情况是,从Atom运行时,当前目录与从命令行运行时的目录不同

如果需要相对于要从中导入模块的目录查找模块,请尝试以下方法(按列出的顺序)查找并将其添加到sys.path:

  • myfile=globals().get(“\uuuu file”\uuuuu”)
    (如果通过IDE或直接从命令行以外的任何其他方式加载主程序,则可以从导入的模块或主程序执行此操作)。如果这返回一个值,则将
    os.path.dirnme(myfile)
    (或其派生项,视需要)添加到您的路径中
  • os.path.dirname(sys.argv[0])
    (这仅适用于主模块)

如果最好不要在sys.path中使用相对路径,那么像sys.path.append(“D:\Misiek\Pulpit\python\ud120 projects master\naive\u bayes\tools”)这样的东西不应该起作用吗?是的,当然可以。它确实将您的代码限制在您在主机上选择的特定位置,但如果这是您运行它的唯一位置,那也没关系。如果我使用sys.path.append(“d:\Misiek\Pulpit\python\ud120 projects master\naive\u bayes\tools”),我仍然会收到相同的错误。不知道为什么:如果按字面意思使用,它将不起作用,因为\字符会被吃掉。将它们加倍,或者使用“原始”字符串文字:
r“D:\Misiek\Pulpit\python\…”
(此表单保留原样)。sys.path.append(“D:\\Misiek\\Pulpit\\python\\ud120项目主控\\naive\u bayes\\tools”)或sys.path.append(r“D:\Misiek\Pulpit\python\ud120项目主控\ naive\u bayes\tools”)都不起作用:(
Traceback (most recent call last):
  File "D:\Misiek\Pulpit\python\ud120-projects-master\naive_bayes\nb_author_id.py", line 17, in <module>
    from email_preprocess import preprocess
ImportError: No module named email_preprocess