在任意目录下的命令行中运行python脚本。

问题描述 投票:0回答:1

提前为一个幼稚的问题道歉!我在这里做了一些调查,但仍然感到有点困惑。

我有一个python脚本,我想让它在bash shell中的任何地方都可以执行(就像如何 git, homebrew, neofetch等都可以调用)。我用过 pyinstall 来制作可执行文件,但我不知道该怎么做。我试着把编译文件夹移到了 usr/local 并将可执行文件的别名放在了 usr/local/bin但当我试图从shell中运行时,我得到了一个 "无法执行二进制文件 "的错误信息。urs/local/bin的可执行文件,并看到该文件指向的是在 usr/local.

有谁知道有什么建议,或者知道有什么好的资源来尝试和了解我做错了什么吗? 非常感谢!

python bash shell command-line executable
1个回答
1
投票

对于一个简单的脚本,最简单的方法是简单地添加一个Python的 羊肠线,将脚本保存到你的目录中。PATH (如 /usr/local/bin),并设置脚本的可执行位。

例如

#!/usr/bin/python3
import sys
print('Hello, world! I am Python', sys.version)

保存为 /usr/local/bin/python-hello 其次 chmod u+x /usr/local/bin/python-hello 会让你执行 python-hello 从任何地方。

更复杂的脚本最好通过以下方式来执行 正确包装 妥帖 console_scripts 切入点 -- 虽然和PyInstaller一起打包的东西也能用,不过会重很多。

EDIT

一个包含多个模块的脚本应该被组织成一个包,如

python_hello/
  __init__.py
  __main__.py
  greetings.py

__main__.py 可以是这样的

def main():
    # ...

if __name__ == "__main__":
    main()

这样你就可以用 python -m python_hello 以及建立 python_hello.__main__:main 作为控制台脚本的入口点。

© www.soinside.com 2019 - 2024. All rights reserved.