如何使python脚本可执行?

时间:2014-12-15 23:03:58

标签: python macos command-line

如何使用我自己的命令行名称运行python脚本,例如' myscript'无需做python myscript.py'在终端?

5 个答案:

答案 0 :(得分:36)

  1. 在脚本顶部添加一个shebang行:

    #!/usr/bin/env python

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

    chmod +x myscript.py

  3. 将包含它的目录添加到PATH变量中。 (如果你想坚持下去,你必须在家里的.bashrc.bash_profile进行此操作。)

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

答案 1 :(得分:15)

跨平台的最佳方式是创建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

答案 2 :(得分:3)

我通常在剧本中做:

//                    ˇ What to click inside body
$('body').on('click', '.uploaded_file_delete', function() {
    // Do stuff here...
});

在终端:

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

permission table

答案 3 :(得分:1)

另一种可能有人感兴趣的相关解决方案。也可以直接将 myscript.py 的内容嵌入到 Linux 上的 .bashrc 文件中(我认为应该也适用于 MacOS)

例如,我在 .bashrc 中定义了以下函数,用于将 Python 泡菜转储到终端,请注意 ${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

答案 4 :(得分:1)

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

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

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