如何运行Python脚本而不输入'python ...
我想在我的命令行中运行一个Python脚本,而不需要每次都手动输入“python”。我试过在脚本开头加上“#!/path/to/python”,但好像没什么用。有没有人知道有什么解决办法?非常感谢。
5 个回答
在你的脚本最上面加一行:
#! /usr/bin/env python
- 把你的脚本名字从
script_name.py
改成script_name
- 让这个脚本可以执行:
chmod +x script_name
最上面那一行的作用是选择你在命令行输入 python 时所用的同一个 python
。你也可以指定一个直接的路径:
#!/opt/python/3.6/bin/python
这段话其实跟你个人的脚本关系不大,但因为你提到了 beets
,我想告诉你,实际上在发布你的软件包时,可以通过一些工具来自动化这个过程。这个工具叫做 setuptools 的 entry_point
选项。
举个例子,如果你要发布一个叫 myModule
的软件包,并希望用户在控制台输入 mymodulescript
就能直接使用 main_function()
这个函数,你可能需要在你的 setup.py
文件里加上类似下面的内容:
setup(
# your other arguments ..
entry_points={
'console_scripts': [
'mymodulescript = myModule:main_function'
]
}
)
你需要在脚本的开头加上一个特殊的标记,叫做shebang:
#!/usr/bin/env python
接着,要把这个脚本设置为可执行的,也就是让它可以被运行:
chmod +x foo
然后你就可以像运行其他可执行文件一样来运行它了:
./foo
还有一点要注意:如果你是在Windows上编辑这个文件,然后在Linux上运行它,可能会遇到一个很奇怪的错误,提示“没有这样的文件或目录”。这个问题是因为文件的行结束符不对,Windows用的是CRLF,而Linux用的是LF。如果你把它们转换成LF格式,脚本就能正常运行了。你可以在Notepad++中通过选择 > 查看 > 显示符号 > 显示行结束符来查看这些行结束符。然后通过Notepad++ > 编辑 > 行结束符转换 > Unix格式来把所有的行结束符转换成LF格式。或者,你也可以使用一个叫做 dos2unix
的工具(例如 dos2unix foo.py
),这个工具在大多数Linux系统上都可以找到。