简体   繁体   中英

How do I run a python 3 script that imports yaml from bash

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'"

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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM