如何从命令行安装一个可随处运行的脚本?
如果我有一个基本的Python脚本,里面有必要的开头部分,这样我就可以在Linux的终端中直接运行
/path/to/file/MyScript [args]
而不需要通过解释器或者任何文件扩展名来执行,它就能运行这个程序。
那么,我该如何安装这个脚本,让我可以在系统的任何地方简单地输入
MyScript [args]
就能运行它呢?这个设置可以让系统上的所有用户都能使用,还是说每个用户都得单独设置一次?我只需要把脚本放在一个特定的目录里,还是还需要做其他的事情呢?
10 个回答
12
你还可以使用 setuptools
(可以在这里找到:https://pypi.org/project/setuptools/)
- 你的脚本应该是:
def hi():
print("hi")
(假设文件名是 hello.py
)
在你的脚本旁边再添加一个
__init__.py
文件,里面可以什么都不写。再添加一个
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,
)
- 现在你可以在这个文件夹里运行
python setup.py develop
- 然后你可以在任何地方运行
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
权限),这样任何用户都可以使用它。