如何使用自己的命令行名称(如
myscript
)运行 python 脚本,而不必在终端中执行 python myscript.py
?
另请参阅: 尝试在 Linux 上运行 Python 脚本时,为什么会出现“./xx.py: line 1: import: command not found”之类的非 Python 错误? 对于在 Linux 上运行 Python 脚本时遇到的常见问题尝试在 Linux/Mac 上进行设置,或者 “来自/导入”不被识别为内部或外部命令、可操作程序或批处理文件,以解决 Windows 上的同等问题。
在脚本顶部添加 Shebang 行:
#!/usr/bin/env python
将脚本标记为可执行:
chmod +x myscript.py
将包含它的目录添加到您的
PATH
变量中。 (如果你想让它坚持下去,你必须在你的主目录中的 .bashrc
或 .bash_profile
中执行此操作。)
export PATH=/path/to/script:$PATH
跨平台的最佳方法是创建
setup.py
,在其中定义入口点并使用 pip
安装。
假设您有以下内容
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
最后使用以下命令安装。
pip install -e /path/to/script/folder
-e
代表可编辑,这意味着您将能够处理脚本并调用最新版本,而无需重新安装
之后您可以从任何目录运行
myscript
。
我通常在脚本中这样做:
#!/usr/bin/python
... code ...
在终端中:
$: chmod 755 yourfile.py
$: ./yourfile.py
一些人可能感兴趣的另一个相关解决方案。也可以直接将 myscript.py 的内容嵌入到 Linux 上的 .bashrc 文件中(我认为也应该适用于 MacOS)
例如,我在 .bashrc 中定义了以下函数,用于将 Python pickles 转储到终端,请注意,
${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
。
我想到的最简单的方法是使用“pyinstaller”。
pip install pyinstaller
pyinstaller maincode.py
我希望这个解决方案对您有所帮助。 GL