1 python pip python-module setuptools
我想要一个包含名为'foobar'的代码的Python文件,该代码在安装软件包时作为脚本执行,如下所示:
$ foobar -i arg1 arg2
Run Code Online (Sandbox Code Playgroud)
foobar被声明为脚本setup.py.
该foobar文件还包含由包中的其他模块导入的函数/类,因此有一个单独的文件quux.py导入foobar:
(in `quux.py`):
import mypackage
import mypackage.foobar as foobar
Run Code Online (Sandbox Code Playgroud)
如何在foobar没有.py扩展名的情况下保留并将其声明为脚本,setup.py但仍然可以将其作为模块从另一个文件中导入?这是正确的答案:导入没有.py扩展名的python模块, - 还是有另一种技巧?
一般来说,这里的解决方案是foobar.py作为模块保留,并使脚本简单如下:
import foobar
foobar.main()
Run Code Online (Sandbox Code Playgroud)
如果您正在使用setup.py(并且您可能应该)安装模块,您也可以通过console_scripts入口点执行此操作,如下所示:
entry_points={
'console_scripts': [
'foobar = foobar:main'
],
},
Run Code Online (Sandbox Code Playgroud)
这将安装一个foobar命令,该命令大致相当于本答案第一部分中的存根.