skip to Main Content

I am calling a python script using python2.x from inside a bash script. How can I update it to python 3.X?

This is a script I need to be able to distribute to clients, using the venv cli will not work

Running on CentOS

First I’ve installed any number of python 3 packages.

$ sudo yum list installed | grep python3

python3-other-rpm-macros.noarch         3-25.el7                       @epel    
python34.x86_64                         3.4.10-2.el7                   @epel    
python34-devel.x86_64                   3.4.10-2.el7                   @epel    
python34-libs.x86_64                    3.4.10-2.el7                   @epel    
python34-pip.noarch                     8.1.2-8.el7                    @epel    
python34-setuptools.noarch              39.2.0-3.el7                   @epel    
python36.x86_64                         3.6.8-1.el7                    @epel    
python36-libs.x86_64                    3.6.8-1.el7                    @epel    
$ sudo pip3.4 install pyyaml
Requirement already satisfied (use --upgrade to upgrade): pyyaml in /usr/lib64/python3.4/site-packages

from bash script do_update.sh

#!/bin/bash

python3 update_yaml.py

from python script update_yaml.py

import sys
import common_update
import subprocess

with open.('input.yaml') as in_yaml:
  input_data = yaml.safe_load(in_yaml)

I expect it to parse input.yaml

Output: "ModuleNotFoundError: No module named 'yaml'"

2

Answers


  1. It looks like you might have multiple versions of python installed.

    It’s no longer recommended to use the pip script (or pip3.4 etc.)
    A common problem is that you actually install packages for a different python version than the one you expected.

    Instead do this:

    sudo python3 -m pip install pyyaml
    

    This way you can be sure that python3 will be able to use the library.

    Login or Signup to reply.
  2. Do not ever run pip install under root in CentOS/RHEL unless it happens inside virtualenv, or unless you want to screw your system.

    There is package:

    yum install python34-PyYAML
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search