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