我有一个代码,我希望人们可以将它们用作独立的python程序,或者作为自己代码的模块导入。有没有办法打包一个模块,该模块还可以包含一个可以从命令行运行的程序?
即。从命令行:
> ZHermesCode
或在ipython或python脚本中:
import ZHermesCode
答案 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”。但是,有人也可以导入此模块并可以访问“测试”功能以在自己的程序中使用。