我想运行一个python脚本而不必每次都在shell中调用“python”。我试图将shebang#!/ path /添加到/ python但这似乎不起作用。有谁知道这方面的工作?非常感谢。
答案 0 :(得分:97)
你必须添加shebang:
#!/usr/bin/env python
然后使脚本可执行:
chmod +x foo
然后你可以像任何其他可执行文件一样运行它:
./foo
来自Homer6的一条说明:如果你是从Windows编辑文件并在linux上调用它,你可能会遇到神秘的“没有这样的文件或目录”错误。这是由于线的行结尾是CRLF而不是LF。如果将它们转换为LF,脚本将按预期执行。 Notepad ++>查看>显示符号>显示行尾以显示EOL字符。和Notepad ++>编辑> EOL转换> Unix格式转换所有行结尾使用LF。或者,您可以使用大多数Linux系统上的dos2unix
工具(dos2unix foo.py
)。
答案 1 :(得分:3)
在脚本顶部添加一行:
#! /usr/bin/env python
script_name.py
重命名为script_name
chmod +x script_name
顶部的行选择在提示符下键入python时获得的python
。您还可以指定直接路径:
#!/opt/python/3.6/bin/python
答案 2 :(得分:3)
它并不真正适用于您的个人脚本,但在您引用beets
时,请注意,在分发您的包时,也可以自动执行此操作,这要归功于setuptools entry_point
选项。
因此,如果您要分发myModule
这样的包并希望通过在控制台中键入main_function()
来访问mymodulescript
函数,则可能会在setup.py
文件中添加这样的内容:
setup(
# your other arguments ..
entry_points={
'console_scripts': [
'mymodulescript = myModule:main_function'
]
}
)
答案 3 :(得分:2)
另一种解决方法可能是使用.bashrc中定义的别名:
e.g。在.bachrc文件中添加以下行:
alias mypythonalias = "python mypyrhonfile.py"
输入终端:
source ~/.bashrc
然后你可以输入:
mypythonalias
执行python文件。
答案 4 :(得分:1)
确保您能够在终端上运行/ path / to / python。并确保您已为python文件授予执行权限。您可以通过
授予该文件的权限chmod +x mypythonfile.py