[참고]

1. 원문 : https://www.python.org/dev/peps/pep-0008/

2. 파이썬 코딩의 기술(개정2판) /  브렛 슬라킨 저 / 길벗

 

- 파이썬 코드를 작성할 때는 항상 PEP8 (파이썬 개선 제안 #8) 스타일 가이드를 따르기
- 큰 파이썬 커뮤니티와 공통된 스타일을 공유하면 다른 사람과 협력할 때 도움이 됨
- 일관성 있는 스타일을 사용하면 나중에 자신이 작성한 코드를 직접 수정할 때 더 수월함

(1) 공백(whitespace) / 탭, 스페이스, 새줄(newline) 등의 문자를 모두 합한 말


- 탭 대신 스페이스를 사용해 들여쓰기
- 문법적으로 중요한 들여쓰기에는 4칸 스페이스 사용하기
- 라인 길이는 79개 문자 이하
- 긴 식을 다음 줄에 이어서 쓸 경우, 일반적인 들여쓰기보다 4 스페이스 더 들여쓰기
- 파일 안에 각 함수와 클래스 사이에는 빈 줄을 두 줄 넣기
- 클래스 안에서 메서드(함수)와 메서드(함수) 사이에는 빈 줄을 한 줄 넣기
- 딕셔너리(dictionary)에서 키와 콜론(:) 사이에는 공백을 넣지 않고, 한 줄 안에 키와 값을 같이 넣는 경우에는 콜론 다음에 스페이스를 하나 넣기
- 변수 대입에서 = 전후에는 스페이스를 하나씩만 넣기
- 타입 표기를 덧붙이는 경우, 변수 이름과 콜론 사이에 공백을 넣지 않도록 주의! 콜론과 타입 정보 사이에는 스페이스 하나 넣기

(2) 명명 규약
- 함수, 변수, 애트리뷰트(attribute)는 lowercase_underscore 처럼 소문자와 밑줄 사용하기
- 보호돼야 하는 인스턴스 애트리뷰트는 일반적인 애트리뷰트 이름 규칙을 따르되, _leading_underscore 처럼 밑줄로 시작하기
- 비공개(private) (한 클래스 안에서만 쓰이고 다른 곳에서는 쓰면 안 되는 경우) 인스턴스 애트리뷰트는 일반적인 애트리뷰트 이름 규칙을 따르되, __leading_underscore처럼 밑줄 두 개로 시작하기
- 클래스(예외도 포함)는 CapitalizedWord처럼 여러 단어를 이어 붙이되, 각 단어의 첫 글자를 대문자로 하기
- 모듈 수준의 상수는 ALL_CAPS 처럼 모든 글자를 대문자로 하고 단어와 단어 사이를 밑줄로 연결한 형태를 사용
- 클래스에 들어 있는 인스턴스 메서드(함수)는 호출 대상 객체를 가리키는 첫 번째 인자의 이름으로 반드시 self를 사용해야 함
- 클래스 메서드는 클래스를 가리키는 첫 번째 인자의 이름으로 반드시 cls를 사용해야 함 (cls 참고 : https://journeytosth.tistory.com/73)

(3) 식과 문
- 긍정적인 식을 부정하지 말고 (if not a is b) 부정을 내부에 넣기 (if a is not b)
- 빈 컨테이너(container)나 시퀀스(sequence) ([]나 " 등)를 검사할 때는 길이를 0과 비교 (if len(something)==0) 하지 말기. 대신 if 컨테이너가 비어 있지 않은 경우 암묵적으로 True로 평가된다는 사실을 활용할 것
- 한 줄짜리 if 문이나 한 줄짜리 for, while 루프, 한 줄짜리 except 복합문을 사용하지 말기. 명확성을 위해 각 부분을 여러 줄에 나눠 배치하기
- 식을 한 줄 안에 다 쓸 수 없는 경우, 식을 괄호로 둘러싸고 줄바꿈과 들여쓰기를 추가해서 읽기 쉽게 만들기
- 여러 줄에 걸쳐 식을 쓸 때는 줄이 계속된다는 표시를 하는 \ 문자보다는 괄호를 사용하기

(4) 임포트
- import 문(from x import y 포함)을 항상 파일 맨 앞에 위치하기
- 모듈을 임포트할 때 절대적인 이름(absolute name)을 사용하고, 현 모듈의 경로에 상대적인 이름은 사용하지 말기
(예를 들어 bar 패키지로부터 foo 모듈을 임포트한다면 from bar import foo라고 해야지, import foo라고 하면 안 됨)
- 반드시 상대적인 경로로 임포트해야 하는 경우는 from . import foo 처럼 명시적인 구문을 사용하기
- 임포트를 적을 때는 표준 라이브러리 모듈, 서드 파티 모듈, 개인이 만든 모듈 순서로 섹션을 나누기. 각 섹션에는 알파벳 순서로 모듈을 임포트하기.

 

최초작성 : 20.12.18
수정 :
21.12.9 (Notepad++ 단축키 추가)

 

자꾸 까먹어서 적어둬요. (내 머리속에는 지우개가 있나보다)

 


[파이참, Visual Studio]

(1) 여러 줄 띄어쓰기 : (드래그로 여러줄 선택 후) Tap 키

(2) 여러 줄 띄어쓰기 전 상황으로 가기 : SHIFT + TAP 키

 

(3) 여러 줄 주석처리 : CTRL + / 

(4) 여러 줄 주석처리 전 상황으로 가기 : CTRL + /  (여러줄 주석처리와 같음)

 

[Notepad++]

(1),(2) 위와 동일

(3) 여러줄 주석처리 : CTRL + K

(4) 여러 줄 주석처리 전 상황으로 가기 : CTRL + SHIFT + K  

참고 : 

[1]github.com/riptideio/pymodbus/

 

[파이썬2 설치] 

$sudo apt-get install python-pymodbus 

 

[파이썬3 (at Ubuntu16.04)] 

$pip3 install pymodbus

 

[동작 테스트 코드 예제]

pymodbus.readthedocs.io/en/dev/source/example/modules.html

 


참고 :

[2] (import ssl 오류 시)  bigwork.tistory.com/25

 

  • pymodbus 라이브러리 사용 시 ssl 라이브러리 import 되지 않는 경우
  • 파이썬 3.6.9 버전에서 발생 (파이썬 3.6.12 버전)으로 업데이트 진행하면 import 됨

 

[업데이트 방법] [2]

1. www.python.org/ftp/python/

 접속 후 3.6.12 버전 다운로드

2.  압축 풀고 폴더로 이동
3. (터미널창) $./configure
4. $sudo make altinstall
5. $python3 (버전확인)

[참고]

“UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.” when plotting figure with pyplot on Pycharm

 

 

파이썬에서 matplotlib 라이브러리로 그래프를 그리려고 하는데, "UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.” 메시지가 뜨면 tkinter 모듈(GUI를 위한 라이브러리)이 설치가 잘 안 되어 있기 때문이에요.

 

1. 파이썬 3.5버전 (우분투16.04 버전에서 테스트)

$python3 (기본적으로 파이썬3.5 버전이 설치되어 있어요)

>>>import tkinter (오류 확인, 이상없이 다음 창이 나오면 설치 잘 된거에요)

 

(오류 시)

$sudo apt-get install python3-tk (이상하게 파이참 라이브러리 설치하는 목록에는 없네요. 터미널 창에서 설치하세요)

2. 파이썬 3.6버전 (우분투16.04 버전에서 테스트)

$python3.6 (설치한 버전이 3.7이면 3.7, 3.8이면 3.8 버전을 실행하세요)

>>>import tkinter (모듈이 불러오는지 테스트)

 

(오류시)

$sudo apt-get install python3.6-tk (버전이 3.7(python3.7-tk) 이거나 3.8(python3.8-tk)이면 버전을 바꿔주세요. 사실 해보진 않았어요)

(우분투에서는 기본적으로 파이썬2와 파이썬3.5 버전이 설치되어있는데, 파이썬3.6 버전이상으로 사용시에는 파이참(개발도구)으로 개발환경을 구축하면 편함. 하지만 위에 언급한 것처럼 python3-tk 모듈은 검색되지 않음 )

[참고]

 

[서론]

  • 인공지능 관련 공부를 시작하면 HW(하드웨어) 설정을 해야하는데, 무슨 엑티브X도 아니고 깔라는게 너무 많음. 
  • 인공지능 관련 책(딥러닝에 목마른 사람들을 위한 Pytorch / 장지수님 저 / 비제이퍼블릭)에서 설치하는 과정에 파이썬3.6이 좋다는데, 우분투16.04에는 파이썬3.5버전이 설치되어 있고 업그레이드 해도 3.5버전임
  • 파이참 실행 후 프로젝트 환경설정에 Base interpreter를 python3.5가 아닌 python3.6으로 변경하고 싶었음

[본론]

 

1. 우분투 16.04에 파이썬3.6 버전 설치

$sudo add-apt-repository ppa:deadsnakes/ppa (실행 후 ENTER)

$sudo apt update

$sudo apt install python3.6

$ls -l /usr/bin/python* (python3.6 설치 확인)

$python3 -V (버전확인)

2. 파이참 실행 - New Project - Project Interpreter:New Virtualenv environmen - Base interpreter - 파이썬 3.6 버전 선택

 

[결론]

  • 엑티브X는 설치하라는데로 설치하면 잘 동작하나 우분투에 인공지능 설치하는 것은 한 번 잘못 설치하면 포맷을 너무 많이 해야 함! 즉 불편함!
  • 다시 공부하러 가~즈~아!

[파이썬 라이브러리]

https://www.lfd.uci.edu/~gohlke/pythonlibs/

 

[windows]

cmd 실행 -

c:\>python -m pip install --user numpy matplotlib

Numy Matplotlib 설치

c:\>python -m pip install --user opencv-python

open CV 설치

c:\>python -m pip install --user tensorflow

Tensorflow 설치

 

 

c:\>pip list

설치된 모듈 확인

c:\>pip uninstall opencv-python

open CV 삭제

 


[Ubuntu]

$sudo pip3 install --upgrade pip (파이썬3버전의 pip 업그레이드)


 

[Documentation] openCV 메뉴얼 (실습책의 버전과 맞지 않으면 오류가 발생할 수 있음)

https://docs.opencv.org/4.0.0/


*우분투에서 파이썬 3을 삭제하면 부팅이 안 됨!


[현상]

  • 우분투16.04에 파이썬3.7을 설치했는데 pip3로 설치한 모듈이 import 되지 않는 현상
  • (기존에 설치되어 있는) 파이썬 3.5 버전을 삭제해보기로 함
[실행]
$whereis python    #현재 PC에 설치 되어있는 python 경로를 보여줌
$ whereis python
python: /usr/bin/python /usr/bin/python3.5 /usr/bin/python3.5m /usr/bin/python2.7 /usr/bin/python3.5-config /usr/bin/python3.5m-config /usr/lib/python3.5 /usr/lib/python2.7 /etc/python /etc/python3.5 /etc/python2.7 /usr/local/bin/python3.7m-config /usr/local/bin/python3.7 /usr/local/bin/python3.7m /usr/local/bin/python3.7-config /usr/local/lib/python3.7 /usr/local/lib/python3.5 /usr/local/lib/python2.7 /usr/include/python3.5 /usr/include/python3.5m /usr/share/python /usr/share/man/man1/python.1.gz

$pip3 -V        #파이썬3 모듈 설치할 때 유용한 pip3버전을 확인함


$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)


$sudo apt autoremove python3.5    #python3.5 제거



[결과]

  • 부팅 시 작업표시줄 UI등이 나타지 않는 오류 발생
  • 리눅스 시스템 일부가 내장되어 있는 파이썬3.5로 제작되어 있는 느낌임. 우분투에 파이썬3.7을 설치 했음에도 파이썬3.5를 위처럼 제거 했더니 시스템의 오류 발생
  • 라즈베리파이와 동일한 현상임
  • 결론 : 추천하지 않음. 우분투 재설치 예정


[참고]


+ Recent posts