如何从Python中运行源代码?

12 浏览
0 Comments

如何从Python中运行源代码?

我正在尝试运行activate.sh文件,以便从Python设置虚拟环境的环境路径,但我无法从Python运行源文件。有没有办法做到这一点?

我的源代码在这里:

如果sys.argv[1]=='-a':
        os.system('. activate.sh')
    elif sys.argv[1]=='-d':
        os.system('. deactivate.sh')
    else:
        print('您只有-a,-d作为选项')

0
0 Comments

如何从Python中运行源代码?

在Python中,可以使用subprocess模块来运行bash脚本。但是要注意,只能使用可信任的bash文件。因此,代码应该是:

import subprocess
if sys.argv[1]=='-a':
    subprocess.call("activate.sh", shell=True)
elif sys.argv[1]=='-d':
    subprocess.call("deactivate.sh", shell=True)
else:
    print('You only have -a, -d as options')

activate.sh和deactivate.sh脚本位于同一个文件夹中,我不想手动设置路径。同时,通过设置路径,我得到了Permission Denied(权限被拒绝)的错误。

解决方法是使用与脚本相同的目录。

我只得到了Permission Denied(权限被拒绝)的错误`/bin/sh: 1: ./activate.sh: Permission denied`

将bash文件的权限设置为chmod 777,这样任何人(包括Python)都可以读取、写入和执行它。

即使我将其设置为可执行文件,虚拟环境也在后台运行并关闭。

0
0 Comments

问题原因:运行源代码时,虚拟环境终端在后台运行并停止。

解决方法:使用os.execv()函数来执行命令,指定要运行的虚拟环境的终端路径和命令。在命令中使用source命令来激活虚拟环境。以下是示例代码:

import os
os.execv("/bin/bash", ["bash", "-c", "source /path/to/activate;bash"])

将上述代码中的/path/to/activate替换为实际的虚拟环境路径。通过执行该代码,可以在新的bash会话中激活虚拟环境并运行源代码。

0