gpt4 book ai didi

python - 创建pypy进程

转载 作者:行者123 更新时间:2023-12-01 04:56:13 25 4
gpt4 key购买 nike

我想创建一个运行 PyPy 的进程。我尝试了以下方法并且有效:

import os
os.chdir('<path-to-pypy-download>/bin/')
os.execl('pypy', 'pypy', '-c', 'print "Hi!"')

但是,当我删除 chdir 时:

import os
os.execl('<path-to-pypy-download>/bin/pypy', 'pypy', '-c', 'print "Hi!"')

我得到:

debug: WARNING: Library path not found, using compiled-in sys.path.
debug: WARNING: 'sys.prefix' will not be set.
debug: WARNING: Make sure the pypy binary is kept inside its tree of files.
debug: WARNING: It is ok to create a symlink to it from somewhere else.
debug: OperationError:
debug: operror-type: ImportError
debug: operror-value: No module named os

请问,有人知道如何在不更改工作目录的情况下生成 PyPy 进程吗?

最佳答案

这可能不正确(在这种情况下我会删除它),但我很确定您需要做的是:

os.execl('<path-to-pypy-download>/bin/pypy', 
'<path-to-pypy-download>/bin/pypy', '-c', 'print "Hi!"')

换句话说,传递 arg0 as well as path 的完整路径.

为什么?好吧,当 PyPy 启动时,它必须使用(RPython/compiled-to-C 的等价物) sys.argv[0]找到自定义 stdlib 的路径。它还可以用来做什么?当然,它只是从传递给解释器的 main 函数的 char *argv[] 参数中复制而来。当您让操作系统为您启动一个程序时,它会将完整路径放在那里。但是,当您使用 execl 显式设置它时,它只会复制您提供的任何内容。

它实际上比这更复杂一点 - 它执行一个 readlink (以允许符号链接(symbolic link))和一个 abspath (以允许自己通过相对路径运行 - 如第一个示例中所示)。但基本思想是相同的。

顺便说一句,您可能需要考虑使用完全安装的 PyPy 而不是 run-out-of-build-tree PyPy,在这种情况下,将设置其 sys.prefix正确启动,因此不需要这个。

关于python - 创建pypy进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com