ai didi

python - "python myscript"在 shell 中工作,但 os.execl( "python", "myscript") 在 Python 中失败 - 为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:00 24 4
gpt4 key购买 nike

我在从 python 启动可执行文件时遇到问题。我把它归结为:

#!/usr/bin/python
import os
py_path='/home/jdoe/python/1509/bin/python'
os.execl( py_path, '/home/jdoe/run.py' )

这失败了:

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site

我尝试将 PYTHONHOME 添加到脚本中并出现其他错误,但我的问题是:为什么脚本在以下情况下失败:

/home/jdoe/python/1509/bin/python /home/jdoe/run.py

有效吗?

os.exec() 使用调用脚本环境,所以应该是一样的。我在这里缺少什么?

最佳答案

正确用法

os.execl(py_path, py_path, '/home/jdoe/run.py')

来自文档:

os.execl(path, arg0, arg1, ...)¶

arg0 是可执行文件对其调用名称的看法。通过将您的 run.py 路径放在那个位置,您可以防止它出现在 arg1 中——第一个需要常规参数的位置。

在shell中复制

您的错误可以从 shell 中重新创建,如下所示:

(exec -a /home/jdoe/run.py /home/jdoe/python/1509/bin/python)

...将 /home/jdoe/run.py 作为 arg0 而不是 arg1 传递。然而,默认情况下,shell 始终将其调用的可执行文件的名称作为 arg0 传递,从而让该可执行文件知道调用它时使用的名称。

关于python - "python myscript"在 shell 中工作,但 os.execl( "python", "myscript") 在 Python 中失败 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42368409/

24 4 0
文章推荐: node.js - Node.js 中的跨平台事件监听器
文章推荐: c - 具有常量成员的结构的内存分配
文章推荐: javascript - 根据输入字段值隐藏或显示 div
文章推荐: node.js - 使用 Microsoft Bot Framework 在 slack 中获取消息发件人的姓名
太空宇宙
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com