如何使python脚本可执行?

5rgfhyps  于 2023-04-10  发布在  Python
关注(0)|答案(6)|浏览(126)

如何使用自己的命令行名称(如myscript)运行Python脚本,而无需在终端中执行python myscript.py
参见:./xx.py: line 1: import: command not found

a0zr77ik

a0zr77ik1#

1.在脚本的顶部添加一个shebang行:
#!/usr/bin/env python
1.将脚本标记为可执行:
chmod +x myscript.py
1.将包含它的目录添加到PATH变量中(如果你想保留它,你必须在你的主目录中的.bashrc.bash_profile中这样做)。
export PATH=/path/to/script:$PATH

ugmeyewa

ugmeyewa2#

最好的方法是创建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代表editable,这意味着您将能够处理脚本并调用最新版本,而无需重新安装
之后,您可以从任何目录运行myscript

2jcobegt

2jcobegt3#

我通常在剧本中这样做:

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

在终端:

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

whlutmcx

whlutmcx4#

另一个相关的解决方案,有些人可能会感兴趣。人们也可以直接嵌入www.example.com的内容myscript.py到Linux上的.bashrc文件中(我认为也应该适用于MacOS)
例如,我在我的.bashrc中定义了以下函数,用于将Python pickle转储到终端,请注意${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

kpbpu008

kpbpu0085#

我想到的最简单的方法是使用“pyinstaller”。
1.创建一个包含所有你在代码中使用的库的环境。
1.激活环境并在命令窗口中写入pip install pyinstaller
1.使用命令窗口打开代码www.example.com所在的主目录maincode.py。
1.记住保持环境活动并写入pyinstaller maincode.py
1.检查名为“build”的文件夹,您将找到可执行文件。
我希望这个解决方案对你有帮助。GL

hvvq6cgz

hvvq6cgz6#

如果脚本是由使用Nssm工具创建的服务运行的,我已经为找不到命令py -3或任何其他与pylauncher命令相关的问题挣扎了几天。
但是当直接从cmd运行时,相同的命令也可以工作。
解决方案是什么?只需重新运行Python安装程序,并在最后单击选项以禁用路径长度限制。
我就把它放在这里,这样任何人都可以使用这个答案,并发现它很有帮助。

相关问题