728x90

우분투에서 python으로 외부 library를 설치해서 사용해야 될 경우가 많다.

 

특히 open source, github에서 보면 requirements.txt 라는 파일이 종종 보이는데,

 

이는 source code 원작자가 다른 이들이 본인의 것을 사용하기 위해 필요한 version을 명시한 것이다.

 

보통 pip3 을 이용하여 외부 library를 설치하는데, 본인이 설치한 python3 library 확인은 pip3 freeze 를 치면 된다.

 

python external library

 

위의 보이는 것들은 내가 사용하고 있는 library들이다. tensorflow, torch 등이 설치된 것을 볼 수 있다.

 

github에서 보이는 것처럼 내가 쓰고 있는 환경을 다른 서버의 계정, 혹은 남에게 공유하고 싶다면?

 

pip3 freeze > requirements.txt 를 입력하면 된다.

 

 

위의 requirements.txt를 이제 공유하기만 하면 된다.

 

이후 requirements.txt 내의 library들을 설치하고 싶으면,

 

pip3 install -r requirements.txt

 

를 입력하면 된다.

 

728x90
728x90

appropriate binary mode and that you have compiled unzip properly 과 같은 문제가 생겼을 시, 아래와 같은 방법으로 해결이 가능함

 

 

zip -FF my_zip --out my_zip_ver2.zip

 

unzip my_zip_ver2.zip

 

 

728x90
728x90

입력 가정

 

a = [1, 1, 2, 2, 2, 3, 3, 3, 1, 3, 4, 3, 3, 2, 2, 0] 
b = [2, 2, 3, 3, 4, 4, 5, 1, 1, 1, 2, 2, 5, 5, 7, 3, 0]

 

위와 같은 값이 있을 때, 전체 array에서 중복되는 값이 아닌 [1, 1] ==> [1] 로 만들고 싶다면 아래와 같이 하면 됨

import numpy as np


def del_over(array):
    
    return array[array != np.r_[array[1:], None]]

a = [1, 1, 2, 2, 2, 3, 3, 3, 1, 3, 4, 3, 3, 2, 2, 0]
a = np.asarray(a)
b = [2, 2, 3, 3, 4, 4, 5, 1, 1, 1, 2, 2, 5, 5, 7, 3, 0]
b = np.asarray(b)

print('origin input a = ', a) # origin input
a_a = del_over(a)
print('modified input a = ', a_a) # modified

print('origin input b = ', b) # origin input
b_b = del_over(b)
print('modified input b = ', b_b) # modified


 

결과 화면

 

728x90

'Program > Python' 카테고리의 다른 글

python logger 끄는 법 - turn off logging  (0) 2024.02.20
pip freeze path 문제  (0) 2023.06.22
ImportError: cannot import name 'main' pip  (0) 2019.10.08
pip와 pip3 차이  (2) 2018.04.12
Ubuntu Python2, Python3 버전 관련  (0) 2018.04.12
728x90

python의 library를 설치하기 위해 pip, python-pip3을 주로 설치하거나 get-pip.py file을 통하여 설치할 때가 많은데, 이 때 우분투 모듈과의 버전 문제 등 호환이 일어나지 않아서 생기는 문제로 간주된다.

 

이는 아래의 명령어를 통해 해결할 수 있고, 이를 통해 잘 작동함을 볼 수 있다.

 

apt-get install python3-distutils

 

설치 전 문제

No module named 'distutils.util'

관리자 계정 통하여 설치

apt-get install python3-distutils

 

관리자 계정으로 설치 이후 해결 모습

 

* sudo 권한 필요하니 server에서 사용할 경우 관리자에게 설치를 부탁하면 된다.

728x90
728x90

우분투로 apt-get install package, apt install package 를 실행하여도 반응이 없거나 시간이 오래걸릴 때가 있는데, 

 

인터넷에서 찾아본 결과

1) kr.archive.ubuntu.com 을 카카오로 변경하는 법

2) dns-server ip를 변경하는 법

 

이 있었다.

 

1)의 경우에는 apt-get 패키지 다운로드 서버를 변경하는 방법이다.

 

vi /etc/apt/sources.list 를 열고,

 

:%s/kr.archive.ubuntu.com/ftp.daumkakao.com

를 실행하면 된다.

 

이것을 해도 안될 경우 2)로 넘어간다.

 

2)의 경우에는,

 

vi /etc/network/interfaces 를 열고,

 

dns-nameservers 8.8.8.8 8.8.4.4

를 추가해준 뒤, :wq!를 한다.

 

그 후, vi /etc/resolv.conf 를 열고,

기존의 nameserver를 주석 처리 (#) 한 뒤,

nameserver 8.8.8.8

nameserver 8.8.4.4

를 추가해주면 된다.

 

참고로 pip install 도 안 될 경우, 이 방법을 통해서 해결 가능하다.

728x90
728x90

Ubuntu LTS 16.04에서 pip3 을 통해 matplotlib을 설치하려면, pip를 업데이트 하라고 나오는데,

 

업데이트를 하게 되면, 아래와 같은 에러가 생긴다.

 

File "/usr/bin/pip3", line 9, in <module>

from pip import main

ImportError: cannot import name 'main'

위의 에러를 해결하려면 아래의 명령어를 이용하여 다시 설치해야 된다.

 

sudo python3 -m pip uninstall pip && sudo apt-get install python3-pip --reinstall

 

추가적으로, matplotlib의 버전을 3.0.3을 설치하게 된다면 문제가 없다...(python3.5, Ubuntu16.04, pip3 기본 버전)

 

pip3 install --user matplotlib==3.0.3

 

728x90

'Program > Python' 카테고리의 다른 글

python logger 끄는 법 - turn off logging  (0) 2024.02.20
pip freeze path 문제  (0) 2023.06.22
numpy를 이용한 연속적인 중복값 제거  (0) 2021.01.22
pip와 pip3 차이  (2) 2018.04.12
Ubuntu Python2, Python3 버전 관련  (0) 2018.04.12
728x90

많은 사람들이 tmux 사용법을 모르는 것 같다.

 

나는 개인적으로 pycharm에서 코딩하는 것 보다, terminal 상에서 vim을 이용하여 주로 코딩하는데, 그 중 가장 큰 단점은 1개의 terminal로 모든걸 하기가 힘들단 것이다.

 

이 때, terminal을 여러개 사용할 수 있고,

어디에서든 명령어 하나로 그 terminal의 모든 saved 들을 가져오면 편할 것이라 생각했는데, tmux가 이런 기능을 해준다.

 

설치: sudo apt-get install tmux

 

tmux << 치면 바로 창이 열리는데,

 

나는 .tmux.conf 라는 파일을 사용하여 ctrl+a+c 를 누르면 새 창이 열리도록 하였고, ctrl+a+% 를 사용하여 창을 나눌 수 있다.

 

.tmux.conf에 대한 source들은 인터넷에 많으니 찾아본 뒤 본인 입맛에 맞는 것을 사용하면 될 것 같다.

 

예를 들어, 직장 desktop에서 tmux로 5개의 창을 열어놓고 작업한 뒤, 귀가 후 집에서 자기전에 돌려본 것을 확인하고싶을 때,

 

tmux at -d

 

사용하면 어디서든 그 환경을 그대로 유지할 수 있다.

 

tmux 여러 창

 

 

위의 사진처럼 여러 창을 열 수 있고,

세로, 가로로 분할도 가능하다.

 

728x90
728x90

최근들어 비트코인 등 해킹이 빈번하게 일어나는 것 같다.

 

특히 대학 및 연구소의 GPU 자원을 해킹하여 채굴하고 본인들 지갑(미국, 아랍 등)으로 송신하는 경우가 있는데, 학교 특성상 VPN이 없다보니, 본인이 사용하는 컴퓨터의 IP만 허용하는 법이 필요하다

 

본인의 사용 PC IP가 192.168.10.125 이면

 

sudo ufw allow from 192.168.10.125/0

 

본인의 사용 PC IP가 192.168.X.X 이면

 

sudo ufw allow from 192.168.0.0/16

 

이렇게 설정하면 가능하다.

728x90
728x90

파일 이름: this_file

폴더 이름: this_folder

 

다른 서버내의 id: other_server_id

다른 서버의 ip: 192.168.0.0

다른 서버내의 옮길 디렉토리: /home/junewoo

 

1. 다른 서버로 복사할 때,

scp file id@ip:/dir

ex) scp this_file other_server_id@192.168.0.0:/home/junewoo/

==> 다른 서버내의 /home/junewoo/ 내에서 this_file 만 옮겨짐

2. 다른 서버로 폴더안에 포함된 모든것들 복사할 때,

scp -r folder id@ip:/dir

ex) scp -r this_folder other_server_id@192.168.0.0:/home/junewoo/

==> 다른 서버내의 /home/junewoo/ 내에서 this_folder 폴더가 옮겨짐

 

3. 같은 서버내의 파일/폴더 이동 및 이름 변경

mv file /dir

ex) mv ./this_file ./not_this_file

==> 현재 커맨드라인이 있는 위치(pwd)에서 같은 디렉토리 내의 this_file 파일이 not_this_file로 변경됨

 

ex) mv ./this_folder /test/dir/mnt/dataset/

==> 현재 커맨드라인이 있는 위치(pwd)에서 /test/dir/mnt/dataset/ 으로 파일을 옮김

 

728x90
728x90

한 개의 압축파일을 풀었는데, 그 안에 여러개의 압축파일이 있을 수 있다.

 

5개 이하면 직접 하나씩 unzip이나 tar -xvf 하면 되는데,

 

10개, 20개 넘어가면...이게 좀 귀찮다.

 

다음과 같이 커맨드 창에서 해결할 수 있다.

 

zip 파일일 경우

find . -name '*.zip' -exec unzip {} \;

 

tar 파일일 경우

find . -name '*.tar' -exec tar xvf {} \;

 

tar.gz파일일 경우

find . -name '*tar.gz' -exec tar xvf {} \;

 

bz2 파일일 경우

find . -name '*.bz2' -exec tar xvf {} \;

 

 

728x90

+ Recent posts