如何使Python脚本可执行?

问题描述 投票:0回答:5

如何使用自己的命令行名称(如

myscript
)运行 python 脚本,而不必在终端中执行
python myscript.py


另请参阅: 尝试在 Linux 上运行 Python 脚本时,为什么会出现“./xx.py: line 1: import: command not found”之类的非 Python 错误? 对于在 Linux 上运行 Python 脚本时遇到的常见问题尝试在 Linux/Mac 上进行设置,或者 “来自/导入”不被识别为内部或外部命令、可操作程序或批处理文件,以解决 Windows 上的同等问题。

python command-line
5个回答
147
投票
  1. 在脚本顶部添加 Shebang 行:

    #!/usr/bin/env python

  2. 将脚本标记为可执行:

    chmod +x myscript.py

  3. 将包含它的目录添加到您的

    PATH
    变量中。 (如果你想让它坚持下去,你必须在你的主目录中的
    .bashrc
    .bash_profile
    中执行此操作。)

    export PATH=/path/to/script:$PATH


85
投票

跨平台的最佳方法是创建

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


12
投票

我通常在脚本中这样做:

#!/usr/bin/python
... code ...

在终端中:

$: chmod 755 yourfile.py
$: ./yourfile.py

permission table


3
投票

一些人可能感兴趣的另一个相关解决方案。也可以直接将 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


2
投票

我想到的最简单的方法是使用“pyinstaller”。

  1. 创建一个包含您在代码中使用的所有库的环境。
  2. 激活环境并在命令窗口中写入
    pip install pyinstaller
  3. 使用命令窗口打开代码maincode.py所在的主目录
  4. 记得保持环境活跃并写下
    pyinstaller maincode.py
  5. 检查名为“build”的文件夹,您将找到可执行文件。

我希望这个解决方案对您有所帮助。 GL

© www.soinside.com 2019 - 2024. All rights reserved.