如何使用自己的命令行名称(如“ myscript”)运行 Python 脚本,而不必在终端中执行“ python myscript.py”?
在脚本的顶部添加一个 shebang 行:
#!/usr/bin/env python
将脚本标记为可执行文件:
chmod +x myscript.py
将包含它的目录添加到 PATH变量。(如果你想它坚持,你必须在 .bashrc或 .bash_profile在你的家庭目录这样做。)
PATH
.bashrc
.bash_profile
export PATH=/path/to/script:$PATH
我在剧本里经常这么做:
#!/usr/bin/python ... code ...
最后:
$: chmod 755 yourfile.py $: ./yourfile.py
跨平台的最佳方法是创建 setup.py,在其中定义一个入口点,并使用 pip进行安装。
setup.py
pip
假设你有以下 myscript.py的内容:
myscript.py
def run(): print('Hello world')
然后将 setup.py添加到以下内容:
from setuptools import setup setup( name='myscript', version='0.0.1', entry_points={ 'console_scripts': [ 'myscript=myscript:run' ] } )
入口点的格式是 terminal_command_name=python_script_name:main_method_name
terminal_command_name=python_script_name:main_method_name
最后使用以下命令进行安装。
pip install -e /path/to/script/folder
-e代表可编辑,这意味着您可以处理脚本并调用最新版本,而不需要重新安装
-e
之后,您可以从任何目录运行 myscript。
myscript
另一个相关的解决方案,一些人可能会感兴趣。还可以直接将 myscript.py 的内容嵌入到。Linux 上的 bashrc 文件(我认为应该也适用于 MacOS)
例如,在。Bashrc 用于将 Python pickles 转储到终端,请注意,${1}是函数名称后面的第一个参数:
${1}
depickle() { python << EOPYTHON import pickle f = open('${1}', 'rb') while True: try: print(pickle.load(f)) except EOFError: break EOPYTHON }
在这个地方(和重新加载后。Bashrc) ,我现在可以从我的计算机上的任何终端或目录运行 depickle a.pickle。
depickle a.pickle
我想到的最简单的方法是使用“ pyinstaller”。
pip install pyinstaller
pyinstaller maincode.py
我希望这个解决方案能对你有所帮助。 GL
如果脚本是通过使用 Nssm工具创建的服务运行的,那么我就会遇到这样的问题: 找不到命令 py -3或任何与 pylauncher 命令相关的命令。 但是当直接从 cmd运行时,同样的命令也可以工作。 解决办法是什么?只需重新运行 Python 安装程序,并在最后单击禁用路径长度限制的选项。 我就把它留在这里,这样任何人都可以使用这个答案,并找到它的帮助。
Nssm
py -3
cmd