Reputation: 11
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'"
Upvotes: 1
Views: 352
Reputation: 9895
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
Upvotes: 0
Reputation: 23074
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.
Upvotes: 1