【问题标题】:Installing modules seems to work when running python in terminal but not when running a script在终端中运行 python 时安装模块似乎有效,但在运行脚本时无效
【发布时间】:2015-08-09 04:22:49
【问题描述】:

您好,我下载了 beautifulsoup4 的源代码。我将它移到了一个文件夹 .../Desktop/Python_modules/ ,我喜欢在其中保存我下载的模块的所有文件夹,并尝试按如下方式安装它:

  1. 去了目录

  2. 跑:

    python setup.py install
    

现在,当我在终端中打开 python 时,我可以使用“from bs4 import BeautifulSoup”导入 beautifulsoup4,但是当我将它放在使用 ./script 执行的脚本中时,会出现以下错误:'ImportError: No module named请求”?

我将如何安装 beautifulsoup4 以便可以使用“./”运行脚本?

只是为了完成:我正在使用 mac

【问题讨论】:

  • 这取决于模块 requests 的安装位置以及在尝试执行导入时该位置是否是 sys.path 的一部分。您可以在脚本中添加类似import sys; print(sys.path) 的内容,以查看它是否在正确的位置查找请求模块。阅读相关的python docs,了解导入的工作原理。
  • 请注意,此错误是由于 python 找不到名为 requests 的模块引起的。这可能是bs4 需要的要求,或者您在脚本中除了BeautifulSoup 之外还导入了requests
  • 您是否从自制软件或其他第三方来源安装了 Python?

标签: python terminal


【解决方案1】:

您看到的行为强烈表明您的系统上安装了两个不同版本的 Python。如果您的脚本以:

开头
#!/usr/bin/python

然后运行./script 将始终运行/usr/bin/python。如果您安装了另一个 Python(例如,通过自制软件,它将为您提供 /usr/local/bin/python),那么在终端中运行 python 可能会为您提供那个版本。

所以...运行python setup.py install 会将模块安装在/usr/local/bin/python 可见但/usr/bin/python 不可见的位置,这就是为什么当您在终端中运行python 而不是当您运行时它对您有效的原因运行脚本。

您可以通过像这样运行脚本来解决此问题:

python script

或者通过修改脚本开始:

#!/usr/bin/env python

它将在您的$PATH 中查找python 二进制文件,而不是使用固定路径。

(或者你可以通过运行/usr/bin/python setup.py install来安装模块)

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 2023-03-31
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    相关资源
    最近更新 更多