argparse Python模块在cli中的应用

12
我试图在Linux SSH Secure Shell命令行环境中运行一个Python脚本,并尝试导入argparse库,但是它报错:"ImportError:No module named argparse"。
我认为这是因为Linux shell使用的Python环境中没有argparse库,如果我能找到Python环境正在使用的库的目录并将argparse库复制进去,我就可以解决这个问题。但是我找不到该目录的位置。
如果您能帮助我找到该目录,我会非常感激(我想现在可以将argparse库包含在与我的Python脚本相同的目录中,但我更愿意将argparse库放在其他Python库所在的地方)。

argparse.py是Python中相当标准的一部分,有可能您已经破坏了sys.path。请运行以下命令并将结果粘贴到您的问题中:python -c "import argparse; print argparse"。 - ed.
1
你正在使用哪个版本的Python? - Andrew Cox
5个回答

6
argparse模块是在Python 2.7中添加的。 http://docs.python.org/library/argparse.html 在2.7之前,处理命令行参数最常见的方式可能是使用getopthttp://docs.python.org/library/getopt.html 当然,您始终可以通过查看sys.argv来手动处理命令行。但是getopt是一个很好的抽象层,而argparse则更好。
如果您真正需要在旧环境中使用argparse(有争议),则有一个Google Code项目维护它,并且您可以将其包含在项目中。 http://code.google.com/p/argparse/

4
在Python 2.7版本之前,可以使用optparse模块或通过pip install argparse安装argparse模块。 - jfs
@greg,你可以使用 virtualenv 这个工具,它包含了 pip - dkamins

2
如果您使用的是Centos 6默认的Python 2.6.6版本,请手动添加包。
yum install python-argparse

只需要这样就可以让IPython正常工作了。奇怪的是,当我使用YUM安装IPython时,YUM没有自动安装它。


2

如果你在使用CentOS系统,没有一个简单的RPM包可以获取Python 2.7版本,那么JF的建议是使用pip install argparse。这是解决问题的方法。感谢JF的建议。


1

您可以使用以下方法检查模块的搜索路径:

import sys
print "\n".join(sys.path)

但是没有argparse很奇怪:它在标准库中...


直到2.7版本之前,它不在标准库中。有关详细信息,请参见我的答案。 - dkamins

0

你可能正在使用较旧版本的Python。

argparse模块是最近在Python 2.7中添加的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接