如何从命令行安装一个可随处运行的脚本?

45 投票
10 回答
77636 浏览
提问于 2025-04-16 23:01

如果我有一个基本的Python脚本,里面有必要的开头部分,这样我就可以在Linux的终端中直接运行

/path/to/file/MyScript [args]

而不需要通过解释器或者任何文件扩展名来执行,它就能运行这个程序。

那么,我该如何安装这个脚本,让我可以在系统的任何地方简单地输入

MyScript [args]

就能运行它呢?这个设置可以让系统上的所有用户都能使用,还是说每个用户都得单独设置一次?我只需要把脚本放在一个特定的目录里,还是还需要做其他的事情呢?

10 个回答

12

你还可以使用 setuptools (可以在这里找到:https://pypi.org/project/setuptools/

  1. 你的脚本应该是:
def hi():
    print("hi")

(假设文件名是 hello.py

  1. 在你的脚本旁边再添加一个 __init__.py 文件,里面可以什么都不写。

  2. 再添加一个 setup.py 脚本,内容如下:

#!/usr/bin/env python3

import setuptools

install_requires = [
        'WHATEVER PACKAGES YOU NEED GOES HERE'
        ]

setuptools.setup(
    name="some_utils",
    version="1.1",
    packages=setuptools.find_packages(),
    install_requires=install_requires,
    entry_points={
        'console_scripts': [
            'cool_script = hello:hi',
        ],
    },
    include_package_data=True,
    )

  1. 现在你可以在这个文件夹里运行 python setup.py develop
  2. 然后你可以在任何地方运行 cool_script,你的脚本就会执行。
28

让你的Python脚本随处可用的步骤:

创建一个Python脚本:

cd /home/el/bin
touch stuff.py
chmod +x stuff.py

找出你的Python安装位置:

which python
/usr/bin/python

把这个代码放进去:

#!/usr/bin/python
print "hi"

在同一个目录下运行:

python stuff.py

上一级目录下就找不到了:

cd ..
stuff.py

-bash: stuff.py: command not found

没找到!这正是我们预期的,把Python文件的路径加到$PATH里

vi ~/.bashrc

添加文件:

export PATH=$PATH:/home/el/bin

保存出来,重新应用.bashrc,然后再试一次

source ~/.bashrc

再试一次:

cd /home/el
stuff.py

打印结果:

hi

诀窍在于,bash shell通过shebang知道文件的语言。

42

把这些东西放在 /usr/local/bin 是最合适的地方。

这个位置是用来放自定义安装的程序的,应该在你的 PATH 环境变量中排在前面。

只需把脚本复制到这个地方(可能需要用 sudo 权限),这样任何用户都可以使用它。

撰写回答