Python 如何安装脚本以在命令行的任何位置运行?
如果我有一个基本的Python脚本,它是hashbang,什么都没有,这样我就可以在Linux终端上运行了Python 如何安装脚本以在命令行的任何位置运行?,python,linux,command-line,installation,Python,Linux,Command Line,Installation,如果我有一个基本的Python脚本,它是hashbang,什么都没有,这样我就可以在Linux终端上运行了 /path/to/file/MyScript [args] 不通过解释器或任何文件扩展名执行,它将执行程序 那么,我会安装这个脚本,以便我可以简单地键入 MyScript [args] 系统中的任何位置,它将运行吗?这可以为系统上的所有用户实现,还是必须为每个用户都重新实现?我是简单地将脚本放在一个特定的目录中,还是需要其他东西?放置类似内容的最佳位置是/usr/local/bin 这
/path/to/file/MyScript [args]
不通过解释器或任何文件扩展名执行,它将执行程序
那么,我会安装这个脚本,以便我可以简单地键入
MyScript [args]
系统中的任何位置,它将运行吗?这可以为系统上的所有用户实现,还是必须为每个用户都重新实现?我是简单地将脚本放在一个特定的目录中,还是需要其他东西?放置类似内容的最佳位置是
/usr/local/bin
这是放置自定义安装的二进制文件的正常位置,应该早在路径中
只需在那里复制脚本(可能使用sudo
),任何用户都可以使用它。在shell中键入echo$PATH
。这些是键入命令时搜索的目录,因此请将其放入其中一个目录中
编辑:显然不要使用/usr/bin
,使用/usr/local/bin
根据,/usr/local/bin/
是定制脚本的好地方。
我更喜欢在复制它们之后使它们成为755
root:root
。将脚本放在路径中的某个位置(如/usr/local/bin
)是一个很好的解决方案,但这会迫使系统的所有用户使用/查看脚本
在/etc/profile
中添加别名可能是一种您想要的方法,允许系统用户使用unalias
命令撤消此操作。要添加的行是:
alias MyScript=/path/to/file/MyScript
只需创建~/bin
,并将导出路径=$PATH:$HOME/bin
放在bashrc/profile中。别搞乱这个系统,它会反过来咬你的,相信我
还有几件事(与问题相关,但不是答案的一部分):
另一种方法是export PATH=$HOME/bin:$PATH
是不安全的,因为bash将查看您的~/bin
文件夹中的可执行文件,如果它们的名称与原始$PATH
中的其他可执行文件匹配,您将对意外/不工作的命令执行感到惊讶李>
在~/bin
中保存脚本时,不要忘记chmod+x
请注意您在~/bin
文件夹中放置的内容,如果您只是在测试某些内容或处理未完成的脚本,那么最好使用CWD
中的/$script\u名称来执行脚本,而不是将其放在~/bin
下
使python脚本在任何地方都可用的演练:
制作python脚本:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
which python
/usr/bin/python
python stuff.py
cd ..
stuff.py
-bash: stuff.py: command not found
export PATH=$PATH:/home/el/bin
cd /home/el
stuff.py
hi
找出python的位置:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
which python
/usr/bin/python
python stuff.py
cd ..
stuff.py
-bash: stuff.py: command not found
export PATH=$PATH:/home/el/bin
cd /home/el
stuff.py
hi
将此代码放在那里:
#!/usr/bin/python
print "hi"
在同一目录中运行:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
which python
/usr/bin/python
python stuff.py
cd ..
stuff.py
-bash: stuff.py: command not found
export PATH=$PATH:/home/el/bin
cd /home/el
stuff.py
hi
进入一个目录,但它不可用:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
which python
/usr/bin/python
python stuff.py
cd ..
stuff.py
-bash: stuff.py: command not found
export PATH=$PATH:/home/el/bin
cd /home/el
stuff.py
hi
找不到!正如我们所期望的,将python文件的文件路径添加到$path中
vi ~/.bashrc
添加文件:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
which python
/usr/bin/python
python stuff.py
cd ..
stuff.py
-bash: stuff.py: command not found
export PATH=$PATH:/home/el/bin
cd /home/el
stuff.py
hi
保存它,重新应用.bashrc,然后重试
source ~/.bashrc
再试一次:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
which python
/usr/bin/python
python stuff.py
cd ..
stuff.py
-bash: stuff.py: command not found
export PATH=$PATH:/home/el/bin
cd /home/el
stuff.py
hi
打印:
cd /home/el/bin
touch stuff.py
chmod +x stuff.py
which python
/usr/bin/python
python stuff.py
cd ..
stuff.py
-bash: stuff.py: command not found
export PATH=$PATH:/home/el/bin
cd /home/el
stuff.py
hi
诀窍在于bash shell通过shebang知道文件的语言。快速答案是将脚本发送到系统中包含的任何目录$PATH
下面用一个穿行示例描述了详细的答案(这是我通常做的):
a) 创建脚本,例如$HOME/Desktop/myscript.py
:
#!/usr/bin/python
print("Hello Pythonista!")
b) 更改脚本文件的权限以使其可执行:
$chmod+x myscript.py
c) 将自定义目录添加到$PATH
(请参见下面注释中的原因)以将其用于用户脚本:
$export PATH=“$PATH:$HOME/bin”
d) 创建指向脚本的符号链接,如下所示:
$ln-s$HOME/Desktop/myscript.py$HOME/bin/hello
请注意,hello
(可以是任何内容)是用于调用脚本的命令的名称
注:
i) 使用$HOME/bin
而不是/usr/local/bin
的原因是为了将本地脚本与其他用户(如果愿意)和其他已安装的脚本分开
ii)要创建符号链接,应使用完整的正确路径,即
$HOME/bin
好~/bin
不好
下面是一个完整的示例:
$ pwd
~/Desktop
$ cat > myscript.py << EOF
> #!/usr/bin/python
> print("Hello Pythonista!")
> EOF
$ export PATH="$PATH:$HOME/bin"
$ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello
$ chmod +x myscript.py
$ hello
Hello Pythonista!
$pwd
~/桌面
$cat>myscript.py#/usr/bin/python
>打印(“你好,蟒蛇!”)
>EOF
$export PATH=“$PATH:$HOME/bin”
$ln-s$HOME/Desktop/myscript.py$HOME/bin/hello
$chmod+x myscript.py
美元你好
你好,蟒蛇!
只需在/usr/local/bin/中创建指向脚本的符号链接即可:
sudo ln -s /path/to/your/script.py /usr/local/bin/script
您还可以使用setuptools
()
您的脚本将是:
(假设文件名为hello.py
)
还可以在脚本旁边添加\uuuuu init\uuuuuuuuuy.py
文件(其中没有任何内容)
添加setup.py
脚本,内容如下:
现在可以在此文件夹中运行python setup.py develope
然后从任何地方运行cool\u script
,脚本就会运行
我在我的~/.bash_配置文件
或~/.zshrc
中找到了一个简单的别名:
别名myscript=“python path/to/my/script.py”
否,请不要使用/usr/bin!出于这些目的使用/usr/local/bin。同意,这是不明智的。使用/usr/local/bin代替$PATH,更难看但有时也很有用,可以在$PATH中添加任意目录。您必须处理一个您不想弄乱的重要全局设置,或者单独添加到用户设置中。+1用于推荐/usr/local/bin
。确保脚本也可执行sudo chmod 744/usr/local/bin/yourscript应该这样做。这与使用-m
标志i有何不同