如何使 Python 脚本可执行?

如何使用自己的命令行名称(如“ myscript”)运行 Python 脚本,而不必在终端中执行“ python myscript.py”?

164638 次浏览
  1. 在脚本的顶部添加一个 shebang 行:

    #!/usr/bin/env python

  2. 将脚本标记为可执行文件:

    chmod +x myscript.py

  3. 将包含它的目录添加到 PATH变量。(如果你想它坚持,你必须在 .bashrc.bash_profile在你的家庭目录这样做。)

    export PATH=/path/to/script:$PATH

我在剧本里经常这么做:

#!/usr/bin/python
... code ...

最后:

$: chmod 755 yourfile.py
$: ./yourfile.py

permission table

跨平台的最佳方法是创建 setup.py,在其中定义一个入口点,并使用 pip进行安装。

假设你有以下 myscript.py的内容:

def run():
print('Hello world')

然后将 setup.py添加到以下内容:

from setuptools import setup
setup(
name='myscript',
version='0.0.1',
entry_points={
'console_scripts': [
'myscript=myscript:run'
]
}
)

入口点的格式是 terminal_command_name=python_script_name:main_method_name

最后使用以下命令进行安装。

pip install -e /path/to/script/folder

-e代表可编辑,这意味着您可以处理脚本并调用最新版本,而不需要重新安装

之后,您可以从任何目录运行 myscript

另一个相关的解决方案,一些人可能会感兴趣。还可以直接将 myscript.py 的内容嵌入到。Linux 上的 bashrc 文件(我认为应该也适用于 MacOS)

例如,在。Bashrc 用于将 Python pickles 转储到终端,请注意,${1}是函数名称后面的第一个参数:

depickle() {
python << EOPYTHON
import pickle
f = open('${1}', 'rb')
while True:
try:
print(pickle.load(f))
except EOFError:
break
EOPYTHON
}

在这个地方(和重新加载后。Bashrc) ,我现在可以从我的计算机上的任何终端或目录运行 depickle a.pickle

我想到的最简单的方法是使用“ pyinstaller”。

  1. 创建一个包含您在代码中使用的所有库的环境。
  2. 激活环境并在命令窗口中写入 pip install pyinstaller
  3. 使用命令窗口打开代码 maincode.py 所在的主目录。
  4. 请记住保持环境处于活动状态并编写 pyinstaller maincode.py
  5. 检查名为“ build”的文件夹,您将找到可执行文件。

我希望这个解决方案能对你有所帮助。 GL

如果脚本是通过使用 Nssm工具创建的服务运行的,那么我就会遇到这样的问题: 找不到命令 py -3或任何与 pylauncher 命令相关的命令。
但是当直接从 cmd运行时,同样的命令也可以工作。
解决办法是什么?只需重新运行 Python 安装程序,并在最后单击禁用路径长度限制的选项。
我就把它留在这里,这样任何人都可以使用这个答案,并找到它的帮助。
enter image description here