我的分发源有以下结构:
|project
|setup.py
|project.py
|package
|__init__.py
|code.py
project.py
是主要脚本,它有shebang line 。
我应该在setup.py
中以某种方式定义上述事实吗?
答案 0 :(得分:1)
您需要查看setuptools console_scripts
entry point。
说你的project.py
目前包含这样的内容:
if __name__ == '__main__':
run_proj()
您需要先移动project.py
package
目录,才能从setup.py
引用它。然后,将run_proj
函数注册到console_scripts
入口点,如下所示:
<强> setup.py
强>
setup(
# other arguments here...
entry_points={
'console_scripts': [
'run-proj = package.project:run_proj',
],
}
)
之后,您需要重新运行setup.py
,例如执行python setup.py develop
,或者在开发过程中使用的任何方法。
然后,您将获得一个调用bin/run-proj
的{{1}}脚本,并可以从命令行调用。 (如果您在虚拟环境中安装软件包,该软件包将在run_proj()
中,或者您在系统范围内安装软件包,如venv/bin/run-proj
,则视您的操作系统/发行版而定。
该脚本实际上应该在您的路径上,因此您应该能够从shell运行usr/local/bin/run-proj
。
此时,shebang行不再是必需的,你可以删除它(run-proj
会有一个自动生成的shebang指向正确的Python解释器。)