我的分发源结构如下:
|project
|setup.py
|project.py
|package
|__init__.py
|code.py
project.py
是主脚本,它有 shebang 行。
我应该在 setup.py
中以某种方式定义上述事实吗?
最佳答案
您需要查看设置工具 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
调用 run_proj()
的脚本,并且可以从命令行调用。 (如果您在虚拟环境中安装该软件包,则该软件包将位于 venv/bin/run-proj
中,或者如果您在系统范围内安装它,则位于类似 usr/local/bin/run-proj
的位置,具体取决于您的操作系统/发行版)。
该脚本实际上应该在您的路径上,因此您应该能够运行 run-proj
来自外壳。
此时,shebang 行实际上不再需要了,您可以将其删除(bin/run-proj
将有一个自动生成的 shebang 指向正确的 Python 解释器)。
关于python - 如何处理安装脚本中有 shebang 行的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700859/