【问题标题】:Why can I import a Python module from command line, but not from script?为什么我可以从命令行导入 Python 模块,但不能从脚本导入?
【发布时间】:2014-12-13 04:06:57
【问题描述】:

我安装了 Python pdfminer module,它带有 pdf2txt.py。我可以从命令行使用 pdf2txt.py,如下所示:

pdf2txt.py -o converted.html some-pdf.pdf

pdf2txt.py 文件位于:

  $ which pdf2txt.py
/usr/local/bin/pdf2txt.py

我也可以从交互式 python 命令行导入它,但令我惊讶的是,我无法在我正在编写的程序中导入它:

有谁知道这是为什么,更重要的是,我该如何解决?欢迎所有提示!

【问题讨论】:

标签: python command-line import module terminal


【解决方案1】:

很可能是因为您从与 pdf2txt.py 相同的目录中启动了解释器,这将其放在了您的模块搜索路径中。您的 python 代码文件是否位于不同的目录中?

【讨论】:

  • 对不起,我应该提到事实并非如此。我从与脚本相同的目录(与/usr/local/bin/pdf2txt.py 不同的目录)中启动了解释器。
  • 我们能否在您的解释器提示和脚本中看到实际的 ImportError 和 print sys.path?
【解决方案2】:

原因正是因为您从与脚本相同的目录启动解释器。您的脚本名称恰好与库名称 (pdf2txt) 相同。在python的库搜索路径中,它会首先搜索其当前工作目录(脚本所在的同一目录)并导入您的pdf2txt.py,而不是pdf2txt.py的库版本。

尝试将您的脚本重命名为 pdf2txt.py 以外的任何内容,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 2018-04-01
    • 2021-04-08
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多