python模块和命令行程序

时间:2014-11-19 03:58:00

标签: python command-line module

我有一个代码,我希望人们可以将它们用作独立的python程序,或者作为自己代码的模块导入。有没有办法打包一个模块,该模块还可以包含一个可以从命令行运行的程序?

即。从命令行:

> ZHermesCode

或在ipython或python脚本中:

import ZHermesCode

2 个答案:

答案 0 :(得分:2)

查找Setuptools automatic script creation。例如,python-scss使用此技术使scss成为可执行的shell命令。

setup.py中:

setup(
    # ...
    entry_points={
        'console_scripts': [
            'scss = scss.tool:main',
        ]
    },
)

然后在scss/tool.py中定义一个函数main。它还使用Loocid提到的技术使tool.py文件本身可以直接执行(而不是根据上面的配方由setuptools公开安装的包装脚本):

if __name__ == '__main__':
    main()

答案 1 :(得分:1)

如果您使用:

if name == '__main__':

只有在有人从命令行运行您的程序时才会运行该'if'语句中的代码。

如果有人要导入您的模块,则代码将无法运行。

例如

def test(st):
    return(st)

if name == "__main__":
    print(test("hello"))

如果从命令行运行该程序,它将打印“hello”。但是,有人也可以导入此模块并可以访问“测试”功能以在自己的程序中使用。