가져오기 오류: '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 설치(또는 사용)pyenv
py 버전 관리) 및 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
pyaml 설치
sudo pip3 설치 pyaml
이것은 나에게 효과가 있었습니다.
여기서 문제가 발생하는 것은 사용자가 (최신) 버전을 다운로드, 컴파일 및 설치했다는 사실입니다.python3
오래된 시스템에서python3
패키지 관리자에 의해 설치됩니다.후자는 가지고 있고 연관되어 있습니다.pip3
전자는 그렇지 않습니다.다음을 수행하여 확인할 수 있습니다./usr/local/bin/python3 --version
그리고./usr/bin/python3 --version
그 때문에, 당신이 할 때 무슨 일이 일어날까요.pip3 install pyyaml
PyYAML 패키지를 이전 Python3에 추가하는 것입니다.다음 작업을 수행할 때:
/usr/bin/python3 env/common_config/add_imagepullsecret.py
새로운 기능에 의존하지 않는 한, 모든 것이 작동해야 합니다.python3
.
보다 구조적인 솔루션은 최신 제품을 위해 설치하는 것입니다.python3
PyYAML을 설치하는 데 사용합니다.
더 구조적인 해결책은 이러한 추가적인 설치를 절대 하지 않는 것입니다.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
'programing' 카테고리의 다른 글
PostgreSQL array_agg 순서 (0) | 2023.05.16 |
---|---|
Bash의 변수에 출력 할당 (0) | 2023.05.16 |
여러 원격 위치에서 풀/푸시하려면 어떻게 해야 합니까? (0) | 2023.05.16 |
Python 목록에서 인접한 항목 쌍을 통해 반복 (0) | 2023.05.16 |
비어 있지 않은 디렉터리 제거 (0) | 2023.05.16 |