ubuntu에서 pycharm에서 라이블러리를 추가 할때 ImportError: No module named pip 에러가 난다면 


(pip를 설치 했어도 계속 난다면!!)


python에 대한 권한을 설정해 주시면 됩니다.



sudo chmod -R a+rX /usr/local/lib/python2.7/dist-packages/
sudo chmod -R a+rX /usr/local/lib/python3.4/dist-packages/


python2.7 / 3.4 버전의 권한을 추가해 주시면 정상 작동 합니다.

저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

음.. SQLAlchemy를 해보고 있는데 정말 수 많은 도큐먼트와 Q&A를 뒤져가며 설치 했지만 계속


 ImportError: No module named 'MySQLdb'


가 반복한다면  pymysql도 설치한다음

('mysql://'...)

이 부분을

('mysql+pymysql://'..)

이렇게 바꿔보세요.
거짓말처럼 됩니다...-_-...


저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret


에러다!! 또 에러..

msyql-python을 설치하려 했더니 에러가 똬악!!


간단한 해결

1.update

$sudo apt-get update


2. python-dev install

$sudo apt-get install python-dev


3. install 

$sudo pip install mysql-python

저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret



python의 timeit으로 콘솔에서는 쉽게 함수 수행시간을 알수 있지만 콘솔이 아닌 ide 환경이나 파일로 timeit 을 import로 해야 합니다 .


수행하려는 함수가 다음과 같습니다. 


sorting.py 


def insertion():
list = [33, 11, 99, 1, 22, 88, 55, 44, 66, 77]
for i in range(len(list)):
if i+1 < len(list):
pin = i+1
for j in reversed(range(0, pin)):
if list[j] > list[pin]:
list[pin], list[j] = list[j], list[pin]
pin = j
else:
break
return list


다른 파일에서 다음과 같습니다. 

import timeit
print(timeit.timeit("insertion()",
setup="from sorting import insertion", number=100))


timeit() 함수 안에 


첫번째 인자는 해당 함수이름 

두번째 인자는 setup으로 해당 py파일을 지정

세번째 인자는 number로 디폴트로 10000입니다.  (number는 해당 숫자만큼 실행한후 평균값 리턴합니다. 위에선 100번 수행후 리턴)



이제 테스트 시간 측정은 timeit 으로 하시면 됩니다. 




자세한 사항은  : https://docs.python.org/2/library/timeit.html

참 쉽죠?!






저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret


그 유명한 travis ci 를 이제서야 써봤습니다. (요즘 CI에 관심이 많습니다.)


뭐 대부분이 젠킨스를 쓰고 계시겟지만 젠킨스의 단점은 서버가 필요하고 설치를 해야 하는것이죠. (물론 설치가 쉽습니다.)


travis ci 는 github 와 연동하여 자동으로 테스트 할수 있는 서비스 입니다. (더 복잡한 처리도 가능합니다.)


travis는 상당히 많은 언어를 지원해 줍니다.  현재 공식으로 지원해주는 언어만


네. 그냥 다 된다고 보시면 됩니다.


해당 언어마다 테스트 하는 라이블러리는 당연히 다른데요.  지원하는 테스트 라이블러리는 아래와 같습니다. 


  • nose
  • py.test
  • mock
  • wheel



그러면 github 와 travis 연동입니다. 


1. 먼저 https://travis-ci.org/  에서 signup을 눌러 줍니다.



2.  github auth와 연동됩니다. 권한등에 대해서 설명해줍니다. authorize application 버튼을 눌러줍니다.




3. 해당 github에서 레파지토리 리스트를 가져옵니다. 원하는 프로젝트를 클릭하여 switch on 시켜 주면 해당 프로젝트와 연동 끝! (쉽죠?)



4. travis ci 예전 버전에서는 해당 프로젝트마다 settings에 들어가서  webhooks 를 설정해 줘야 되었지만 이젠 자동으로 연계됩니다. 

(젠킨스는 연동하려면 서버 키를 등록시켜 줘야 하지만 github에서 travis 를 잘 연계시켜 줍니다. )



5. 이제 프로젝트에서 travis를 연동시킬 파일이 필요합니다. 

프로젝트에 새파일로 .travis.yml 이름으로 파일을 만듭니다.

그리고 아래와 같이 넣어줍니다. 


language: python
python:
- "3.5"

install:
- pip install pymysql

# command to run tests
script:
- py.test

저의 경우 파이썬 3.5버전.

mysql을 사용해서 pymysql모듈을 설치

테스트는 pytest 를  사용으로 명시한것입니다. 


혹시 프로젝트에 따로 설치 해야 하는 모듈이 있다면 

https://docs.travis-ci.com/user/ci-environment/

여기를 참고하세요.



6. 5번과 같이 한 다음 해당 프로젝트를 github에 푸시 하면 자동으로 웹훅이 발동하여 travis에서 빌드를 시작합니다!!! 오!!!!


7. 이제부턴 필요한 테스트 모듈을 넣어줘서 자동으로 테스트 하게끔 만들어 주면 됩니다. 참 쉽죠?!



- 흠...역시 서버가 도커로 되어 있군요. 빌드 할때마다 도커 인스턴스가 생성되는것을 볼수 있습니다. (오픈 소스이니 자체 서버에 설치해서 도커로 연습할수 도 있겠군요. ㅎ)


Using worker: worker-linux-docker-64e8129c.prod.travis-ci.org:travis-linux-2


- travis 의 자세한 api는 아래를 참조하세요!

https://docs.travis-ci.com/user/trusty-ci-environment/





저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret


해당 문장이 긍정인지 부정인지 판단하는 프로그램~ (실은 홈페이지로 만들려고 했으나..... 한글 형태소 분석에 자원을 너무 많이 써서 서버가 멈추는... 돈이 없어서 가장 성능 낮은 서버를 쓰고 있으니..프로그램 하나 안돌아간......ㅜㅡㅜ)



먼저 조건부 확률은 (https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%B6%80_%ED%99%95%EB%A5%A0 )

확률 공간 Ω에서의 두 사건 A, B에 대해서 P(B) > 0일 때 사건 B가 일어났을 때 사건 A의 조건부 확률은





긍정 부정 두가지 상황이 있으므로 


P(c) = 1/2 

 

P1(x|c) = count(해당 문장에서 긍정 단어 리스트 수 ) / count(전체 긍정 단어 리스트 수 )


P2(x|c) = count(해당 문장에서 부정 단어 리스트 수 ) / count(전체 부정 단어 리스트 수 )



if p1 > p2: 
  
   긍정

else:
 
  부정

이 된다.



자세한 사항은 http://newpower.tistory.com/127 참조



from konlpy.tag import Kkma
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123qwe', db='word', charset='utf8')
cur = conn.cursor()
kkma = Kkma()


#조건부 확률 계산
def conditional_probability(test, train_table, all_count, table_count):
    counter = 0
    list_count = []

    #해당 문장이 해당 테이블에 존재 하는지 확인
    for word in test:
        cur.execute("SELECT count(*) as cnt  FROM "+train_table+" where word = '"+word+"'")
        for cnt in cur:
            if int(cnt[0]) > 0:
                counter += 1

        list_count.append(counter)
        counter = 0

    print(list_count)

    cal_list = []
    for j in range(len(list_count)):
        #다음에 * 연산할떄 0이 되지 않기 위해 +1을 해줌
        cal_list.append((list_count[j]+1)/float(table_count+all_count))
    result = 1
    for j in range(len(cal_list)):
        result *= float(round(cal_list[j], 6))

    return_value = float(result)*float(1.0/2.0)
    print(return_value)
    return return_value

# get the data
input_file = open('input.txt', 'r')

list_positive = []
list_negative = []

#형태소 분리
input_line = input_file.readline()
input_kkma = kkma.pos(input_line)

print(input_kkma)

test_output = []
for i in input_kkma:
    test_output.append(i[0])

#긍정 단어 전체 갯수
cur.execute("SELECT count(*) as cnt  FROM positive ")
positive_count = 0
for response in cur:
    positive_count = int(response[0])

#부정 단어 전체 갯수
cur.execute("SELECT count(*) as cnt  FROM negative ")
negative_count = 0
for response in cur:
    negative_count = int(response[0])

# naive bayes 값 계산
result_pos = conditional_probability(test_output, 'positive', positive_count+negative_count, positive_count)
result_neg = conditional_probability(test_output, 'negative', positive_count+negative_count, negative_count)

if result_pos > result_neg:
    print(u'긍정')
else:
    print(u'부정')




결과


" 너는 아름답다."  는 다음과 같이 나옵니다.




끝.

저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret

먼저 


$ sudo pip intall gensim


error!! ndg-httpsclient 관련 패키지를 설치하라고 뜬다.



$ sudo pip install --upgrade ndg-httpsclient


error! ssl 관련 패키지를 설치하라고 뜬다. 


$ sudo apt install libpq-dev python-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev


#include <ffi.h>

                     ^

    compilation terminated.

    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1


해당 파일을 찾을수 없다고 뜬다.. 


$ sudo apt-get install libffi-dev


#include <openssl/e_os2.h>

                               ^

    compilation terminated.

    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

 해당 파일을 찾을수 없다고 뜬다. 


$ sudo apt-get install libssl-dev


$ sudo pip install --upgrade ndg-httpsclient


$ sudo pip install gensim


error!!!!!

ValueError: list.remove(x): x not in list

    

    ----------------------------------------

  Rolling back uninstall of numpy

Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-15qfrQ/numpy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ok5VqF-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-15qfrQ/numpy/


--이젠 방법을 모르겠다. 에러조차 너무 광법위하고 읽을수가 없음.


easy_install pip==1.2.1 로 변경

easy_install --upgrade gensim


헐..된다.. (공식 홈페이지에선 easy_install시 ssl 과 numpy를 설치하라고 써있는데 위에서 설치하여 따로 할 필요는 없다.)

...당혹스럽지만 pip버전을 낮춰서 하던지 아니면 easy_install로 설치하는것을 추천;;;(이것때문에 몇시간을...)





저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret



JetBrains edit is do not have font size control in that menu.


so YOU use keymap font size and that contorl font size.

1 . menu->preferences->keymap


2. search font and Editor Actions->Decrease Font Size / Increase Font Size setting(double click) Add Keyboard Shortcut. 


3. and YOU setting key it worked!

 


저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret





from operator import itemgetter


temp_list = []

temp_dict = dict()

temp_dict["status"] = 1

temp_list.append(temp_dict)

temp_dict = dict()

temp_dict["status"] = 10

temp_list.append(temp_dict)

 sorted(temp_list, key=itemgetter('status'), reverse=True)





저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret


python get today of the week


from datetime import date

today = date.today()

weekday = today.strftime("%A").lower()



저작자 표시
신고

WRITTEN BY
No.190
세계정복의 시작점

받은 트랙백이 없고 , 댓글이 없습니다.
secret