包装和argparse

时间:2014-03-19 12:44:39

标签: python package argparse

创建Python包时,实际的顶级命令经常安装在PATH文件夹中,例如/ usr / local / bin。为了引用所有相关的包模块,需要使用包名称明确限定它们:

import package.module

并明确调用

package.module.function(args)

在一个大型软件包中,广泛使用argparse,软件包中可能有数百个函数和变量的引用,当从/ usr / local / bin / cmd引用时,所有引用都需要使用软件包名称进行限定的.py。这对于生产使用来说很好,但在开发过程中会很痛苦,因为每次测试更改时都需要重新安装包。 (即它只能找到那个模块中的模块,显式位置。

最后,对我的问题: - 命令本身(/usr/local/bin/cmd.py)是否只是导入包中的模块的存根,包含argparser及其定义?

使用此方法,所有模块(存根除外)都存在于包目录中,并且包内引用将查找所有其他模块,而无需在其上显式声明包名称。

2 个答案:

答案 0 :(得分:1)

是的,setuptools.setup(名为entry_points的参数需要一个字典,而名为console_scripts的键就是这样做的。

setuptools.setup(
    ...
    entry_points={'console_scripts': ['mycmd = mycmd:main']},
)

这将在bin目录(system或virtualenv)中创建一个名为mycmd的脚本,该脚本会在调用时加载mycmd模块并执行其主函数。

http://pythonhosted.org//setuptools/setuptools.html#automatic-script-creation

答案 1 :(得分:0)

您好我不认为这是明确的答案,但您可能值得一看:

How can I install Python modules programmatically / through a Python script?

希望能为您的问题提供一些见解和潜在的解决方案

谢谢, // P