使用Atom时没有名为email_preprocess的模块错误

时间:2018-08-14 17:21:32

标签: python atom-editor

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

代码:

import sys
from time import time
sys.path.append("../tools/")
from email_preprocess import preprocess

每当我运行 通过使用以下命令的命令提示符 nb_author_id.py 文件:

python2 nb_author_id.py

D:\ Misiek \ Pulpit \ python \ ud120-projects-master \ naive_bayes 目录中,它可以正常工作。但是,如果要通过Atom运行 nb_author_id.py 文件(使用atom-runner),则会收到错误消息:

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

有什么想法为什么可以通过命令提示符而不是通过Atom起作用?

2 个答案:

答案 0 :(得分:0)

将该目录添加到您的PYTHONPATH环境变量中,这样就不必从同一目录导入该目录。通过添加D:\Misiek\Pulpit\python\ud120-projects-master\naive_bayes;

将该目录附加到末尾

Editing System PYTHONPATH

答案 1 :(得分:0)

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

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

  • myfile = globals().get("__file__")(如果是通过IDE加载的,则可以从导入的模块或主程序中运行,除非它是通过IDE或其他任何方式(直接从命令行加载的))。如果此操作返回一个值,请在您的路径中添加os.path.dirnme(myfile)(或它的派生词,视需要而定)。
  • os.path.dirname(sys.argv[0])(仅适用于您的主模块)