我在'/home/username/scripts/pyscript'中有一个python文件,我想设置一个单词来直接执行这个脚本。
我想这样做"python3/home/username/scripts/pyscript/main.py arg1 arg2";但看起来这个";myscript arg1 arg2";
这可能吗?无论如何,谢谢你。
它有多种可能。链接是Bash的,据说是你的外壳,但这些想法总是适用的。
第一个选项:制作一个shell别名
alias myscript='python3 /home/username/scripts/pyscript/main.py'
请确保将别名添加到你的.profile中,使其在注销后仍然有效。
第二个选项:定义一个包装脚本。创建一个包含以下内容的文件,以您想要的命令(例如myscript(命名:
#!/bin/bash
python3 /home/username/scripts/pyscript/main.py "$@"
保存并使其可执行,然后调用它:
chmod +x myscript
./myscript arg1 arg2
请确保将脚本复制到PATH中的文件夹中(使用echo$PATH检查位置(,以便能够从任何文件夹调用它。
您还可以使用pyinstaller
创建单个可执行文件:
步骤1:安装pyinstaller
[注意:最佳做法是在virutalenv
]中执行此操作
$ pip install pyinstaller
步骤2:根据脚本运行pyinstaller
$ pyinstaller --console --onefile /home/username/scripts/pyscript
$ pyinstaller pyscript.spec # use this after the first run
步骤3:测试生成的可执行
$ cd /home/username/scripts/dist # generated by pyinstaller
$ pyscript arg1 arg2
步骤4:利用$PATH变量
$ cp /home/username/scripts/dist/pyscript /usr/bin
现在,您应该能够从任何位置运行可执行文件。
应该注意的是,生成的可执行文件是特定于操作系统的。例如,如果你在Ubuntu机器上生成它,它将只在Ubuntu(基于Debian(上运行。Windows和其他Linux发行版也是如此。
最后我在@pierpaciugo的帮助下求解我在.bashrc的末尾添加了一个别名,以使其持久化:
alias create='bash /home/username/Programming/Python/GithubAPI/script.sh'
我不能只使用别名,因为我的python依赖于虚拟环境,所以如果我尝试这样做,我就无法将params添加到我的python脚本中。
为此,我创建了这个bash脚本:
#!/bin/bash
source /home/username/Programming/Python/GithubAPI/venv/bin/activate && python3 /home/username/Programming/Python/GithubAPI/main.py $@ && deactivate
现在我可以写";创建param1 param2";它是有效的。我使用所有全局路径,但最好将脚本添加到PATH中的文件夹中。