来自X import Y在终端中工作,但不在终端执行的脚本中

时间:2013-12-23 08:49:41

标签: python import terminal nltk

我正在运行Python 2.7.3和Mac OS 10.8.5。我从nltk.org下载了所有软件包和数据,并且能够在终端中一次成功地使用它们。我想用它们编写自己的脚本,这似乎是一个问题。

如果我打开终端并输入:

  cd nltk_data
  python
  from nltk.book import *

它完美地执行。如果我打开终端并输入:

python mycode1.py

其中“mycode1.py”如下所示:

  import os
  os.chdir('MyDirectory/nltk_data')
  from nltk.book import *

它因错误而失败:

ImportError: No module named book

我想也许是工作目录导致问题,即使在上面的代码中添加os.getcwd()显示我在正确的工作目录中。如果我打开一个新的终端并尝试:

    cd nltk_data
    python mycode2.py 

mycode2.py的样子:

from nltk.book import *

失败并出现同样的错误。我可以从终端运行脚本。

python four.py

其中four.py看起来像:

print 2+2

工作正常。 *似乎也不是问题,因为我也尝试了上面的特定项目,结果相同。似乎从终端运行的脚本中的X导入Y函数是有问题的,但是从终端的X导入Y起作用。我尝试了几种变体,例如:

    import nltk
    import nltk.book

如果我从脚本中请求它,那么“book”仍然是一个不存在的模块(但如果我从终端请求它,它又能正常工作)。

我尝试搜索类似的错误,并且有一些关于附加sys.path的内容,但我知道如何/为什么我会这样做?我也有些困惑,因为“book”不是我下载的nltk_data目录中任何文件或文件夹的名称。我真的不确定从哪里开始。

1 个答案:

答案 0 :(得分:3)

你已经打了别的东西“nltk.py”。删除/重命名该文件和任何相关的已编译字节码文件。