ImportError: No module named 'yaml'

后端 未结 6 940
既然无缘
既然无缘 2020-12-30 22:11

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:<

相关标签:
6条回答
  • 2020-12-30 22:44

    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.

    0 讨论(0)
  • 2020-12-30 22:49
    pip install pyyaml
    

    This should serve the purpose

    0 讨论(0)
  • 2020-12-30 22:51

    Try the follwoing:
    1. uninstall python-yaml and its dependencies.

    $ sudo apt-get remove python3-yaml
    $ sudo apt-get remove --auto-remove python3-yaml
    

    Purging your config/data too.

    $ sudo apt-get purge python3-yaml
    $ sudo apt-get purge --auto-remove python3-yaml
    
    1. Install pyyaml

      $ sudo pip3 install pyyaml

    this worked for me.

    0 讨论(0)
  • 2020-12-30 23:00

    The problem here arises from the fact that you have downloaded, compiled and installed a (newer) version of python3, on a machine that has an older python3 installed by the package manager. The latter has and associated pip3 the former does not. You can verify this by doing /usr/local/bin/python3 --version and /usr/bin/python3 --version

    Because of that, what happens when you do pip3 install pyyaml is to add the PyYAML package to the old Python3. When you do:

    /usr/bin/python3 env/common_config/add_imagepullsecret.py
    

    things should work, unless you rely on some feature of the newer python3.

    A more structural solution is to install pip for the newer python3 and use that to install PyYAML.

    A more structural solution, is to never install such additional python3 in your path, but e.g. in /opt/python/3.7.0, use virtualenv -p /opt/python/3.7.0/bin/python /opt/util/yourutil, install every package with /opt/util/yourutil/bin/pip3 install package_name and then do:

    /opt/util/yourutil/bin/python env/common_config/add_imagepullsecret.py
    

    to run your program. With a few supporting scripts/functions/aliases/links, this can be done very efficiently without polluting the systempython3` "install space" nor your PATH.

    0 讨论(0)
  • 2020-12-30 23:01

    Solution 1: install python 3.6 and ln python3 to it

    export $PYPATH=`which python3`
    wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
    tar -Jxf Python-3.6.5.tar.xz
    cd Python-3.6.5/
    ./configure && make && make altinstall
    rm $PYPATH
    ln -s `which python3.6` $PYPATH
    python3 -m pip install pyyaml
    python3 env/common_config/add_imagepullsecret.py
    

    Solution 2: use virtualenv

    pip3 install virtualenv
    virtualenv --python=python3 venv
    source venv/bin/activate
    pip install pyyaml
    python env/common_config/add_imagepullsecret.py
    

    Solution 3: use pipenv

    https://pipenv.kennethreitz.org/

    0 讨论(0)
  • 2020-12-30 23:07

    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

    cd /*desired*/
    mkdir myProject
    pip install virtualenv -p python3 . #For python 3
    pip install virtualenv -p python2 . #For python 2
    pip install pyyaml
    
    pip freeze > requirements.txt
    

    After this you will be able to see a text doc containing all the dependencies you have installed in the virtualenv.

    Cheers :)

    0 讨论(0)
提交回复
热议问题