运行 来自任何目录的命令行中的 python 脚本

running a python script in the command line from any directory

提前为一个幼稚的问题道歉!我一直在这里进行一些挖掘,但仍然感到有些困惑。

我有一个 python 脚本,我希望它可以从 bash shell 中的任何地方执行(比如 githomebrew , neofetch,等都可以调用)。我已经使用 pyinstall 制作了一个可执行文件,但我不太清楚该怎么做。我尝试将构建文件夹移动到 usr/local 并将可执行文件的别名放入 usr/local/bin,但是当我尝试从 shell 运行 时出现 'cannot execute binary file' 错误].我在 urs/local/bin 中引用 'git' 别名后尝试了此操作,并看到它指向 usr/local.

中的可执行文件

有没有人知道任何建议,或者知道任何好的资源来尝试理解我做错了什么?非常感谢!

对于简单的脚本,使其可执行的最简单方法是简单地添加 Python shebang line, save the script to a directory that's on your 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

更复杂的脚本最好由 packaging them correctly with a proper console_scripts entry point 执行——虽然 PyInstaller 打包的东西也可以,尽管它会更重。

编辑

具有多个模块的脚本应该组织成一个包,例如

python_hello/
  __init__.py
  __main__.py
  greetings.py

__main__.py 可能看起来像

def main():
    # ...

if __name__ == "__main__":
    main()

这样您就可以 运行 使用 python -m python_hello 的脚本以及将 python_hello.__main__:main 设置为控制台脚本入口点。