레이블이 programming인 게시물을 표시합니다. 모든 게시물 표시
레이블이 programming인 게시물을 표시합니다. 모든 게시물 표시

2023년 11월 2일 목요일

파이썬 pyinstaller 에러

Python에서 exe 실행화일을 만들려면

pyinstaller 을 설치 해야 한다.


pip install PyInstaller

PyInstaller을 설치한지 오래되었다면 업그레이드 한다.

pip install --upgrade pyinstaller


실행 화일을 만든다.

pyinstaller hello.py



pyinstaller : 'pyinstaller' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.

이런 에러가 발생할 수 있다.

그렇다면

python -m PyInstaller hello.py

를 실행하면 잘 작동 할 수도 있다.

2023년 1월 24일 화요일

내 PC에 AI(인공지능) 그림 그리기 설치

https://github.com/AUTOMATIC1111/stable-diffusion-webui

에 있는 소스를 이용한 AI(인공지능) 그림 그리기 설치 하는 것이다.


Python 3.10.6을 설치한다.

설치할때 "Add Python to PATH"를 체크한다.

https://www.python.org/downloads/windows/


git을 설치한다.

64-bit Git for Windows Setup 으로 설치한다.

https://git-scm.com/download/win



cmd로 명령어 프롬프트를 실행한다.

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

을 실행하여 stable-diffusion-webui 소스를 다운 받는다.

이 다운받은 소스는 c:나 C:\Windows\System32\ 에

stable-diffusion-webui 폴더에 있다.

혹시 System32에 있다면 C 드라이브로 옮겨준다.


학습된 model을 다운 받아서 넣는다.

https://huggingface.co/runwayml/stable-diffusion-v1-5

v1-5-pruned-emaonly.ckpt 는 머신런닝된 모델

v1-5-pruned.ckpt 는 머신러닝+ 머신러닝을 더 시킬수 있는 모델이다.

v1-5-pruned.ckpt 을 다운받아서 

stable-diffusion-webui\models\Stable-diffusion 에 넣어준다.



위 그림 스타일과 같은

실사 사진과 같은 model을 원한다면
머신러닝된 모델을 다운 받는다.
https://civitai.com/models/6424/chilloutmix

C:\stable-diffusion-webui\models\Stable-diffusion 에 넣어주면 된다.


VAE 모델 다운로드

https://huggingface.co/stabilityai/sd-vae-ft-mse-original/tree/main

C:\stable-diffusion-webui\models\VAE 에 넣는다.


GFPGAN 을 다운 받아서 base

https://github.com/TencentARC/GFPGAN

V1.4 model을 다운받아서 

stable-diffusion-webui 폴더에 넣어준다.


webui-user.bat 을 실행한다.


실행완료 후 나온 URL을 브라워저에 붙이면 실행된다.

http://127.0.0.1:7860/






2022년 12월 26일 월요일

파이참(Pycham) 32bit 파이썬 연결 설정

키움api를 이용한 자동매매 프로그램을 만들때

파이썬을 32bit로 설정해야 한다.


파이썬 32 bit 로 변경한 파이썬을

파이참에 연결하는 법이다.

파이썬 32bit 설정법은 아래 링크를 참조하길 바란다.

https://black-white-all.blogspot.com/2020/09/32bit.html


파이참 오른쪽 위에 있는 설정 Setting을 클릭한다.


메뉴에서

Python Interpreter 를 선택하고

Add Interpreter 를 클릭한다.


System Interpreter 를 선택하고

32bit 로 환경 설정한 phthon을 선택한다.



2020년 9월 22일 화요일

키움API 사용 로그인시 OpenAPI OCX 오류

키움API를 사용하여 로그인을 하면

아래와 같은 에러 메세지가 뜬다.


버전처리를 받으시려면 현재 실행중인 

OpenAPI OCX를 탑재한 프로그램을 종료하신 후 

확인버튼을 눌러주시기 바랍니다. 

그대로 진행시 버전처리가 정상적으로 실행되지 않습니다.


이 메세지는 OCX를 다른데서 사용하고 있다는 뜻이고

C:\OpenAPI\opversionup.exe

의 프로그램을 실행한 후 다시 하면

업그레이드가 되었기 때문에 위의 에러는

발생하지 않는다.

2020년 9월 2일 수요일

아나콘다 32bit 설정 키움api 설정

64bit 파이썬을 32bit로 가상환경을 만드는 방법이다.

아나콘다를 설치하고

명령프롬프트 command창에서
콘다 버전을 확인한다.
conda --version

파이썬 버전을 확인한다.
python --version

32bit 로 환경을 설정한다.
set CONDA_FORCE_32BIT=1

32bit 가상환경을 만든다.
내 컴퓨터의 파이썬은 버전이 3.6.5 이다.
conda create -n 가상환경명 python=3.6.5 anaconda



2020년 7월 10일 금요일

[파이썬] panda 판다 를 이용한 엑셀 중복 제거 저장

파이썬에서
판다 panda 를 이용해서
엑셀의 특정행에 중복되어 있는 데이터를
제거하고 다시 저장하는 프로세스를 진행한다.

먼저 판다를 쓸때에는 엑셀의 첫행을 인덱스로 쓰기 때문에
인덱스로 쓸 내용을 적어 주어야 한다.

나는 mail과 name을 사용하였다.


판다를 임포트한다.

import pandas as pd

판다를 이용해 엑셀파일을 열어 저장한다.

apart = pd.read_excel("test1sample.xlsx", sheet_name='Sheet1')

이때 xlrd에러가 발생할 수 있다. 
에러해결은 아래 링크를 참조하자

https://black-white-all.blogspot.com/2020/07/python.html

mail이라는 컬럼에 있는 중복부분을 빼준다.

df = apart.drop_duplicates(["mail"], keep = "first")

df = apart.drop_duplicates(["mail"], keep = "last")

df = apart.drop_duplicates(["mail"])

중복부분을 어떻게 할것인가의 선택이다.
first는 첫부분은 남겨놓는다.
last는 마지막 부분을 남겨놓는다.
keep 조건이 없으면 중복부분은 모두 삭제이다.

df.to_excel('result.xlsx', sheet_name='Sheet1')


result.xlsx파일에 작업한 결과물을 저장한다.
openpyxl 이 install되어 있어야 한다.


이때 박스의 인덱스 부분을 없애고 싶다면 index를 설정해주면 된다.

df.to_excel('result.xlsx', sheet_name = 'Sheet1', index = False)

[파이썬] Python 엑셀파일 읽기 에러

파이썬 Python에서 panda를 이용한
엑셀 파일읽기를 할때

apart = pd.read_excel("test.xlsx", sheet_name='imsanbu')


ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.

라는 에러가 발생했다.

이 에러는 xlrd가 설치되어있지 않기 때문에 발생하는 것이다.

pip install xlrd

로 xlrd를 설치한다.

2020년 7월 9일 목요일

[파이썬] 파일 읽기 에러

파이썬을 이용한 읽기를 진행하고 있다.
여기서 아래와 같은 에러코드를 만났다.

UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 35: illegal multibyte sequence

내용적으로 보았을 때
cp949 코덱
UnicodeDecode 를 할수 없다는 이야기다.

기본적으로 파이썬은
ANSI를 사용하는데
'UTF-8' / 'UTF-16' / 'EUC-KR' 를 기본으로 사용하지 않는다.

따라서 화일을 사용할때
정의해주어야 한다.

file = open('email.html', 'r')


을 으로

file = open('email.html', 'r', encoding='UTF-8')

정의해주어야 한다.

2020년 7월 8일 수요일

파이썬 구글 이메일 엑세스 문제

파이썬에서 구글 이메일을 사용할 때
엑세스의 에러가 발생할 수 있다.

raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8

에러는 이런 메세지가 나오리라고 예상된다.

무슨 뜻인가 하면 SMTP 메일서버를 이용하는 권한의
에러가 발생했다는 말이다.

이 문제는 아이디와 비밀번호가 맞지 않거나
해당 아이디의 보안을 낮추어 설정하지 않아서 이다.

보통은 낮은 보안이 권장 사항이 아니라서
이런 에러가 발생할 수 있다.


설정의 보안에서
하단에 있는
보안 수준이 낮은 앱의 액세스를
사용으로 설정한다.

2020년 6월 14일 일요일

크롬 드라이브 버전 에러(SessionNotCreatedException)

SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 75

컴퓨터에서 사용하는 크롬 브라우저와
다운 받은 크롬드라이버가
맞지 않아서 생기는 에러

크롬드라이버를 크롬 브라우저와 맞쳐주면 된다.

크롬 버전 확인은
메뉴 -> 도움말 -> Chrome 정보


크롬드라이버 사이트

2016년 2월 17일 수요일

ASP datetime Sql에 적용하기[bnw]

ASP에서 날짜를 구해 그 날짜 이후에 입력되어진
데이타를 Ms Sql에서 가져오는 방법이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%
Dim strSQL
strSQL = " SELECT * "
strSQL = strSQL & "  FROM TEST_TB(NOLOCK) "
strSQL = strSQL & "  WHERE 1 = 1 "
strSQL = strSQL & "  AND FIRST_REG_DAY >= Cast('{0}' as datetime) "
 
Dim days
days = Left(DateAdd("m",-2,Date()), 7) & "-01" '2016-01-01
 
Dim record
Set record = DbExecute(StringFormat(strSQL, Array(days)))
%>
 
 
 
 
cs

6번줄의
Cast('{0}' as datetime)
은 String(문자열)로 되어 있는 것을 datetime으로 변환시켜주는 sql문이다.

9번줄의
DateAdd("m",-2,Date())
는 현재날짜에서 달로 두달 전의 날짜를 가져오는 함수이다.
1번 인자 - "m"은 달을, "d"면 날을 의미한다.
2번 인자 - -2는 2달 전을 의미한다.

오늘이 2016-03-16 이라면
값은 2016-01-16 이 될것이다.

Left(DateAdd("m",-2,Date()), 7)
은 좌측에서 7번째자리까지 가져오는 것으로 월까지반환한다.
2016-01-16 이라면 값은
2016-01 이 된다.




2016년 1월 20일 수요일

자바스크립트 url 주소 가져오는 법[ bnw ]

url이
http://www.blogger.com:80/blogger/login?key=id
라고 하면

location.href : http://www.blogger.com:80/blogger/login?key=id
location.protocol : http:
location.hostname :  www.blogger.com
location.host :  www.blogger.com:80
location.pathname :  /blogger/login
location.search :  ?key=id

가 된다.

사이트에서 바로 체크하는 방법은

브라우저에서 F12를 눌러  개발자 도구를 연다.
Console 탭을 눌러 콘솔창을 실행한다.
원하는 자바스크립트 코드를 넣는다.
크롬에서 실행해 보았다.



2015년 10월 22일 목요일

윈도우에서 node.js 사용하기

node js를 다운로드하여 설치해 줍니다.

node js 다운로드

express프레임워크를 사용할 것이므로
express를 설치해줍니다.

npm install express -g

express로 프로젝트를 만들기 위해 express-generator를 설치해줍니다.

npm install express-generator -g

express 프로젝트명으로 프로젝트를 생성할 수 있습니다.
express nodetest 라는 프로젝트를 생성해 보았습니다.
자동으로 만들어지는 것이 보일겁니다.





2015년 10월 21일 수요일

[JavaScript]배열의 요소 삭제

배열의 중간 부분의 요소를 삭제하려면
splice메소드를 사용하면 된다.

요소의 넘버는 0부터가 시작인것을 주의하자


var array = [0,1,2,3,4,5,6];
array.splice(4,1);

// array의 5번째 요소가 삭제된다.
[0,1,2,3,5,6]


2015년 9월 4일 금요일

Redis 설정과 랭킹처리(node.js)

redis용 npm 모듈을 설치한다.

  npm install redis


레디스 서버와 연결한다.

var redis = require('redis');
var client = redis.createClient("6379", "192.192.0.0");
client.on('connect', function() {
    //console.log('connected');
});

redis.createClient("6379", "192.192.0.0")
레디스 포트는 설정을 바꾸지 않는한,  "6379"번을 사용한다.
redis.createClient("포트", "레디스서버 IP")
이다.


점수를 추가한다

var board = "leaderboard";
var score = 13;
var id = "blaknwhite";
client.zadd(board, score, id, function(err, reply){
    if(err){
        console.log("error");
        return;
    }else{
        console.log("ranking : " + reply);
    }
});

client.zadd(board, score, id, function(err, reply)
board는 키값이다. 이 키값으로 랭킹그룹을 구분한다.
예를 들어 12번 스테이지의 랭킹그룹과 13번 스테이지의 랭킹그룹을 가지고 싶다면 키값을
"stage12"와 "stage13"으로 설정하여 그룹을 나눌 수 있다.
score는 점수를 넣는다.
id에는 유저id를 넣는다.
function(err, reply)는 콜백 함수로서, 에러가 발생하면 err에 값이 있게 되고, 정상적일때는 reply에 rank값이 들어있다.
이때의 rank는  작은값을 0으로 sort 했을때(오름차순)의 값이다.

예를 들어 id(score) 가
  black1(10) ---- 0
  black2(22) ---- 1
  black3(34) ---- 2
라면 black1의 rank는 0,black3는 2 가 된다.

만약 내림차순으로 얻으려면( black3의 랭킹이 0)

client.zrevrank( board, save_data_id, function(err, reply){
});

을 사용한다.

두개의 command를 동시에 실행한다

만약 점수를 추가하면서 zrevrank의 값을 얻어 오려면, 두개의 command를 동시에 실행하는
multi를 사용하면 된다.

var multis = client.multi();
multis.zadd( board, score, id);
multis.zrevrank( board, id);
multis.exec(function(err, re){
    if(err){
        console.log("error");
        return;
    }else{
        console.log("ranking : " + re[1]);
    }
});

콜백함수의 re에는 값이 배열 형식으로 들어가 있다
 re[0] -> zadd의 return값
 re[1] -> zrevrank의 return값


랭킹리스트를 가져온다

내림차순으로 0등부터 2등까지를 점수와 함께 가져오고 싶다면

var board = "leaderboard";
var start= 0;
var end = 2;
client.ZREVRANGE(board, start, end, 'WITHSCORES', function(err, reply){
    if(err){
        console.log("error");
        return;
    }else{
        var count = reply.length;
        var j =0;
        for(var i=0; i < count; i+=2 ){
            console.log("ID : "  + reply[i]);
            console.log("Score : "  + reply[i+1]);
        }
    }
});

예를 들어 id(score) 가
  black1(34) ---- 0
  black2(22) ---- 1
  black3(17) ---- 2
  black4(11) ---- 3
일때
 
client.ZREVRANGE(board, start, end, function(err, reply) 라면
reply[0] -> black1
reply[1] -> black2
reply[2] -> black3
이 된다.

점수도 같이 표시되는
client.ZREVRANGE(board, start, end, 'WITHSCORES', function(err, reply) 라면
reply[0] -> black1
reply[1] -> 34
reply[2] -> black2
reply[3] -> 22
reply[4] -> black3
reply[1] -> 17
이 된다.