首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打包和argparse

打包和argparse
EN

Stack Overflow用户
提问于 2014-03-19 20:44:39
回答 2查看 246关注 0票数 1

在创建Python包时,实际的顶级命令通常安装在路径文件夹中,例如/usr/local/bin。为了让它引用所有相关的包模块,需要用包名称显式地限定它们:

代码语言:javascript
复制
import package.module

并显式地调用

代码语言:javascript
复制
package.module.function(args)

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

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

使用这种方法,所有模块(存根除外)都位于包目录中,包内引用将找到所有其他模块,而不需要显式地在模块上声明包名。

EN

回答 2

Stack Overflow用户

发布于 2014-03-19 21:20:27

是的,setuptools.setup(名为entry_points的参数接受一个字典和名为console_scripts的键为您做这件事。

代码语言:javascript
复制
setuptools.setup(
    ...
    entry_points={'console_scripts': ['mycmd = mycmd:main']},
)

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

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

票数 1
EN

Stack Overflow用户

发布于 2014-03-19 21:12:37

嗨,我不认为这是一个明确的答案,但它可能值得你看看:

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

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

谢谢,//P

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22506246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档