【问题标题】:ImportError: No module named argparseImportError:没有名为 argparse 的模块
【发布时间】:2013-02-12 03:49:32
【问题描述】:

我正在尝试运行 Python 程序,但出现错误

ImportError: No module named argparse

我在 * 上找到了问题 “argparse Python modules in cli” 并尝试了第一条评论,即运行命令

python -c "import argparse; print argparse"

导致

<module 'argparse' from '/usr/lib/python2.7/argparse.pyc'>

对我来说,机器上似乎安装了 Python 2.7(我不是管理员),并且还存在 argparse 模块。所以我想知道为什么找不到该模块。在另一台机器上,脚本按应有的方式运行。在上面提到的帖子中,有评论可能sys.path 坏了。我不知道这意味着什么,也不知道如何改变它的价值。有什么想法吗?

【问题讨论】:

  • 您使用的是 Python 2.6 或更早版本吗? “似乎”听起来不太有说服力。当您启动解释器时,您会看到什么版本号? sys.version?
  • 您正在使用的 Python 脚本是否有一个 shebang(开头是 #!)告诉它使用与默认不同的 Python 可执行文件?
  • 我们需要查看脚本本身的更多细节。例如,使用什么可执行文件来运行它?
  • @AlexanderDück:请尝试在命令行中运行以下行:/usr/bin/env python -c "import argparse; print argparse"。 (注意与您之前运行的行的区别)。
  • virtualenv 和pypi.python.org/pypi/argparse 应该可以工作。或者只是从包中提取模块并将其放在路径中的某个位置。

标签: python pip installation argparse python-install


【解决方案1】:

您没有将模块安装到正确版本的 python。有两种方法之一可以解决此问题

  1. 重新安装python和模块
  2. 更改 python 路径显示在这些链接之一(osxwindows(您不应该在我选择 xp 的 Windows 上执行此操作,因为这是我运行的),linux

其中一个应该可以工作,但如果它没有尝试重新启动。祝你好运!! :)

【讨论】:

    【解决方案2】:

    如果您的源文件与 argparse 同名,并且您将其与脚本放在当前目录中,则可能会遇到问题。

    【讨论】:

    • 很抱歉,我完全不明白您的回答。 “源文件与 argpass 同名”是什么意思?
    【解决方案3】:

    尝试安装argparse

    easy_install argparse
    

    【讨论】:

    • 用户已经在/usr/lib/python2.7 中安装了argparse 的Python 安装。为什么要重新安装第二次?...
    【解决方案4】:

    您的脚本可能使用了与您在命令行中执行的版本不同的 Python 版本。确保脚本正在使用此解释器:/usr/lib/python2.7。这个安装肯定有argparse,正如您在第一篇文章中的导入所证明的那样。

    为什么您的脚本可以使用不同的 Python 安装?这可能是脚本第一行的 Shebang 行可能指向不同的 Python 解释器的结果,该解释器没有argparse 模块已安装。

    编辑:另一个问题可能是您的脚本清理了sys.path 列表,这将非常糟糕,因为每个预安装的模块都无法访问...

    【讨论】:

    • 谢谢。我没有将我的脚本作为“./myscript.py”运行,而是更改并执行了“python ./myscript.py”并且它运行正确,因为它使用了我的 PATH 的 Python
    【解决方案5】:

    在 Debian 系统上,您可以使用以下命令安装 argparse 包:

    sudo apt-get install python-argparse
    

    【讨论】:

      【解决方案6】:

      在 CentOS 上,我使用 yum install python-argparse 解决了这个问题。 HT 到 LVA 以获得正确的包名称。

      【讨论】:

        【解决方案7】:

        运行此命令:yum install -y python-argparse。当你是 CentOS 时它可以修复它。

        【讨论】: