首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python在rhel8中找不到python

python在rhel8中找不到python
EN

Unix & Linux用户
提问于 2022-07-28 00:08:41
回答 1查看 590关注 0票数 -4

必须更改What特定的语法或配置,才能获得RHEL8 vm以成功运行以下简单的python程序?

PROBLEM定义:

一个简单的python 3程序使用子流程模块调用另一个简单的python 3程序。在Windows中运行时,预期的输出结果,但在RHEL 8中运行时,会出现以下错误:

代码语言:javascript
复制
b'/bin/sh: python: command not found\n'

THE两个简单程序:

command_test.py的内容如下:

代码语言:javascript
复制
import subprocess

def runShellCommand(commandToRun):
  proc = subprocess.Popen( commandToRun,cwd=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
  while True:
    line = proc.stdout.readline()
    if line:
      print(line)
    else:
      break

myCmd = "python call_me.py"
runShellCommand(myCmd)

call_me.py的内容如下:

代码语言:javascript
复制
print("If you see this, then I was called correctly.")

SUCCESSFULL窗口结果:

在Windows中运行时,两个简单的程序给出了预期的结果如下:

代码语言:javascript
复制
C:\path\to\somedir>python command_test.py
b'If you see this, then I was called correctly.\r\n'

LINUX错误结果:

在RHEL8虚拟机中运行时,将产生以下错误输出:

代码语言:javascript
复制
[user@someVMSS000001 somedir]$ python command_test.py
b'/bin/sh: python: command not found\n'

但是,当我们从终端直接调用第二个程序时,第二个程序运行良好,如下所示:

代码语言:javascript
复制
[user@someVMSS000001 somedir]$ python call_me.py
If you see this, then I was called correctly.

当我们从终端中检查python是否安装时,我们还可以确认python确实已经安装并可见,如下所示:

代码语言:javascript
复制
[user@someVMSS000001 somedir]$ python --version
Python 3.8.12

云-INIT PYTHON安装代码:

提供VM的云init文件中的以下行定义了导致上述问题的python配置:

代码语言:javascript
复制
dnf install python3.8 -y
dnf remove python3.6 -y
rm -rf /usr/bin/python3
mv /usr/bin/python3.8 /usr/bin/python3

python3 --version

dnf install -y python3-setuptools
dnf install python3-pip -y

python3 -m pip install pyyaml
python3 -m pip install requests
python3 -m pip install awscli

#Set alias so python commands use python3
echo "alias python=python3" >> /etc/bashrc

dnf clean all
dnf update python3 -y

python3 --version

So问题似乎是在rhel8中运行子进程模块时,python看不到python。

EN

回答 1

Unix & Linux用户

发布于 2022-07-28 02:09:25

在交互式bash中,python通过别名解析为python3

别名不被继承,因此/bin/sh子进程无法解决它.尽管您可以创建一个符号链接,以便python通过shell的继承PATH解析为python3,但最佳实践是显式地指定python3

参见RHEL 8中的Python中的相关讨论

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/711544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档