如何使python脚本可执行?

ctr*_*rlz 29 python macos command-line

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

tza*_*man 46

  1. 在脚本顶部添加一个shebang行:

    #!/usr/bin/env python

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

    chmod +x myscript.py

  3. 将包含它的目录添加到PATH变量中.(如果你想要它坚持下去,你必须在家里.bashrc.bash_profile家里做这个.)

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

  • @bingo14 `echo $PATH` 的输出是什么?以及脚本的绝对路径? (2认同)
  • 所以这需要添加到你的路径中,就像我在答案中的第3点所示. (2认同)

mer*_*ath 21

跨平台的最佳方法是在其中创建setup.py,定义入口点并安装pip.

假设您有以下内容myscript.py:

def run():
    print('Hello world')
Run Code Online (Sandbox Code Playgroud)

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

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

入口点格式是 terminal_command_name=python_script_name:main_method_name

最后使用以下命令安装.

pip install -e /path/to/script/folder
Run Code Online (Sandbox Code Playgroud)

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

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

  • 太感谢了!我不知道这这么容易。 (5认同)

dAn*_*dAn 7

我通常在脚本中这样做:

#!/usr/bin/python
... code ...
Run Code Online (Sandbox Code Playgroud)

在终端:

$: chmod 755 yourfile.py
$: ./yourfile.py
Run Code Online (Sandbox Code Playgroud)

权限表

  • 避免硬编码 python 路径,更喜欢``/usr/bin/env python`` (4认同)