programing

가져오기 오류: 'yaml'이라는 이름의 모듈이 없습니다.

muds 2023. 5. 16. 23:13
반응형

가져오기 오류: 'yaml'이라는 이름의 모듈이 없습니다.

실행하려는 스크립트가 하나 있습니다.

python3 env/common_config/add_imagepullsecret.py

그러나 다음과 같은 오류가 발생합니다.

 [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이 이미 기계에 설치되어 있습니다.

 [root@bhimsvm31 k8s]# pip3 install pyyaml
 Requirement already satisfied: pyyaml in /usr/lib64/python3.4/site-packages 
 (3.12)
 [root@bhimsvm31 k8s]#

이 스크립트를 통해 PyYAML을 가져오려면 어떻게 해야 합니까?

pip install pyyaml

이것은 목적에 부합해야 합니다.

솔루션 1: python 3.6 설치(또는 사용)pyenvpy 버전 관리) 및 in python3를 관리합니다.

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

솔루션 2: 가상 환경(또는python -m venv)

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

솔루션 3: 사용python-poetry또는pipenv

https://github.com/python-poetry/poetry

https://github.com/pypa/pipenv

개발자가 생성하는 모든 프로젝트에 대해 가상 환경을 생성하는 것이 개발자의 모범 사례입니다.이렇게 하면 시스템의 루트 구성에서 분리된 종속성을 유지할 수 있습니다.

가상 환경을 설치하는 중

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

그런 다음 가상 환경에 설치한 모든 종속성이 포함된 텍스트 문서를 볼 수 있습니다.

건배 :)

콘다를 사용하는 경우 다음을 수행할 수 있습니다.

 conda install -c anaconda pyyaml 

다음을 시도합니다.
python-sysl 및 해당 종속성을 제거합니다.

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

구성/데이터도 삭제합니다.

$ sudo apt-get purge python3-yaml
$ sudo apt-get purge --auto-remove python3-yaml
  1. pyaml 설치

    sudo pip3 설치 pyaml

이것은 나에게 효과가 있었습니다.

여기서 문제가 발생하는 것은 사용자가 (최신) 버전을 다운로드, 컴파일 및 설치했다는 사실입니다.python3오래된 시스템에서python3패키지 관리자에 의해 설치됩니다.후자는 가지고 있고 연관되어 있습니다.pip3전자는 그렇지 않습니다.다음을 수행하여 확인할 수 있습니다./usr/local/bin/python3 --version그리고./usr/bin/python3 --version

그 때문에, 당신이 할 때 무슨 일이 일어날까요.pip3 install pyyamlPyYAML 패키지를 이전 Python3에 추가하는 것입니다.다음 작업을 수행할 때:

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

새로운 기능에 의존하지 않는 한, 모든 것이 작동해야 합니다.python3.

보다 구조적인 솔루션은 최신 제품을 위해 설치하는 입니다.python3PyYAML을 설치하는 데 사용합니다.

더 구조적인 해결책은 이러한 추가적인 설치를 절대 하지 않는 것입니다.python3당신의 길에서, 그러나 예를 들어./opt/python/3.7.0,사용하다virtualenv -p /opt/python/3.7.0/bin/python /opt/util/yourutil모든 패키지 설치/opt/util/yourutil/bin/pip3 install package_name다음을 수행합니다.

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

프로그램을 실행할 수 있습니다.몇 가지 지원 스크립트/기능/에일리어스/링크를 사용하면 시스템을 오염시키지 않고 매우 효율적으로 작업을 수행할 수 있습니다.python3' "설치 공간" 또는 PATH.

제 경우 이는 bash 스크립트의 "#! /usr/bin/envython"에 의해 발생했습니다.PATH를 시작할 때 /Library/Frameworks/Python.frameworks/Versions/3.8/bin을 사용하더라도 env는 v3.8을 찾지 못했고 대신 PyYAML이 없는 /usr/bin에서 v2.7로 기본 설정되었습니다.

제 해결책은 python3를 명시적으로 호출하도록 스크립트를 수정하는 것이었지만, 3.8 bin 디렉토리에 심볼릭 링크를 넣어 python을 찾을 수도 있습니다.

이미 가상 환경을 사용하고 있는데 이 오류가 발생하면 venv 디렉토리를 삭제하고 수정 사항을 다시 설치하십시오.

virtualenv --python=python3.8 .venv
source .venv/bin/activate
pip install -r requirements.txt # or just: pip install pyyaml

이것으로 Ubuntu 20(ROS noetic 설치)에서 발생한 문제가 해결되었습니다.

sudo apt install python-yaml

업데이트 -----

저는 다른 문제가 있었습니다.No module named 'rospkg'이미 설치되어 있습니다.이것은 결국 환경 경로와 관련된 문제입니다.저의 문제를 근본적으로 해결한 것은 다음과 같습니다.

sudo apt install python-is-python3

언급URL : https://stackoverflow.com/questions/50868322/importerror-no-module-named-yaml

반응형