I have one script in which I am trying to execute
python3 env/common_config/add_imagepullsecret.py
But, I am getting the following error:
[root@kevin]# python3 env/common_config/add_imagepullsecret.py
Traceback (most recent call last):
File "env/common_config/add_imagepullsecret.py", line 4, in <module>
import yaml
ImportError: No module named 'yaml'
[root@kevin]# pip3 install pyyaml
Requirement already satisfied: pyyaml in /usr/lib64/python3.4/site-packages
(3.12)
[root@kevin]#
PyYAML is already installed in the machine:
[root@bhimsvm31 k8s]# pip3 install pyyaml
Requirement already satisfied: pyyaml in /usr/lib64/python3.4/site-packages
(3.12)
[root@bhimsvm31 k8s]#
How can I get this script to import PyYAML?
It is best practice of a developer to create a virtualenv for every project he creates.This helps you to maintain the dependencies isolated from the root config of the system
Installing virtualenv
After this you will be able to see a text doc containing all the dependencies you have installed in the virtualenv.
Cheers :)
Just in case none of the above solutions works for you then, here is a permanent fix. download suitable version of pyyaml, extract and install.
Example:
Note: One may download the latest version available if you are not sure about a specific version.
Solution 1: install python 3.6 and ln python3 to it
Solution 2: use virtualenv
https://docs.pipenv.org/
This should serve the purpose
In my case this was caused by "#! /usr/bin/env python" in a bash script. even with /Library/Frameworks/Python.framework/Versions/3.8/bin at the start of my PATH, env didn't find v 3.8, but instead defaulted to v 2.7 from /usr/bin, which didn't have PyYAML.
My solution was to modify the script to call python3 explicitly, but you could also put an symbolic link in the 3.8 bin directory so it finds python.
Try the follwoing:
1. uninstall python-yaml and its dependencies.
Purging your config/data too.
Install pyyaml
$ sudo pip3 install pyyaml
this worked for me.