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
It looks like you might have multiple versions of python installed.
It’s no longer recommended to use the
pip
script (orpip3.4
etc.)A common problem is that you actually install packages for a different python version than the one you expected.
Instead do this:
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 insidevirtualenv
, or unless you want to screw your system.There is package: