[개발이야기#027] 내가 해보고 싶은 것 - 엑셀파일을 이용해서 다중 이체 해보기 - 리눅스 개발 환경 수정

in #kr2 months ago

안녕하세요 가야태자 @talkit 입니다.

https://steemit.com/kr/@talkit/026-postingcuration

소스코드는 위 페이지에 있는 프로그램을 사용하시면 됩니다.

@yoghurty 요거트 님의 질문에 대한 답변 성격으로 작성 되었습니다. ^^

우선 요거트님이 만난 오류는 다음 명령을 수행 했을 때 입니다.

pip install pandas openpyxl steem


위와 같은 오류가 난다고 말씀 하셨습니다.

저기 보시면 gcc cc 라는 프로그램이 리눅스용 C 컴파일러 입니다. ^^

이건 바로 컴파일러가 없구나 하고 답변 드렸습니다.

리눅스가 우분투라면

sudo apt install build-essential git wget cmake

위와 같이 설치 하시면 됩니다.

저는 습관적으로 리눅스 깔면 하는게 저거라서 생략 했었는데 ^^

다른 분들은 필요할 것 같습니다.

그리고, 다음 질문은

python을 수행 했을때의 오류 입니다.


위 오류는 암호화 모듈이 설치 되어 있지 않거나, 잘못 설치 되었을 때 입니다.

제가 pip로 설치하라고 말씀 드린 것 중에 암호화 모듈이 없네요 T.T

pip uninstall pycryptodome
pip install pycryptodome

저는 윗줄을 수행 했을때 설치된게 없다고 놔왔습니다 T.T 아차 ^^

암호화 라이버래리를 설치하고 하시면 잘 됩니다.

(steemit) user@user-VirtualBox:~$ python
Python 3.12.5 | packaged by Anaconda, Inc. | (main, Sep 12 2024, 18:27:27) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from steem import Steem
>>>

저도 우분투에서 동일하게 작업해 보았습니다. ^^

잘 됩니다.

리눅스 개발 환경 정리

전체 소스

import pandas as pd
from steem import Steem
from steem.transactionbuilder import TransactionBuilder
from steembase import operations

def send_steem_from_excel(file_path, steem_username, steem_private_key):
    # 엑셀 파일 로드
    df = pd.read_excel(file_path)

    # Steem 인스턴스 생성
    steem = Steem(nodes=["https://api.steemit.com"], keys=[steem_private_key])

    # 각 행에 대하여 스팀 전송
    for index, row in df.iterrows():
        account = row['계정명']
        amount = row['전송금액']
        memo = row['메모']
        amount_str = f"{amount:.3f} STEEM"  # 3자리 소수로 금액 포맷
        
        # Transaction 생성
        tb = TransactionBuilder()
        tb.appendOps(operations.Transfer(
            **{
                "from": steem_username,
                "to": account,
                "amount": amount_str,
                "memo": memo
            }
        ))
        tb.appendSigner(steem_username, 'active')
        tb.sign()
        tb.broadcast()
        
        print(f"Transferred {amount_str} STEEM to {account} with memo: {memo}")

if __name__ == '__main__':
    # 스팀 계정과 개인 액티브 키 설정
    username = 'your_steem_username'
    private_key = 'your_private_active_key'
    
    # 엑셀 파일 경로
    excel_path = 'path_to_your_excel_file.xlsx'
    
    # 함수 실행
    send_steem_from_excel(excel_path, username, private_key)

엑셀파일 준비

계정명전송금액메모
talkit1프로그램 만들어 주셔서 감사합니다.

설치 패키지

우분투 리눅스

sudo apt install build-essential git wget cmake

RHEL 계열 리눅스 / RHEL, CentOS, Rocky Linux, etc

sudo dnf groupinstall "Development Tools" -y
sudo dnf install -y epel-release
sudo dnf install -y wget curl git vim

리눅스 계열에서는 위와 같이 설치 하시면 됩니다.

파이썬 환경 준비하기

아나콘다 설치 및 아나 콘다 환경 설정

https://steemit.com/blog/@talkit/015-linux-anaconda-python
위 글을 참조하시면 됩니다.

위 글에 나와 있는대로 하셨으면

conda create -n steemit python=3.12
conda activate steemit

파이썬 라이버러리 설치

pip install pandas openpyxl steem
pip install pycryptodome

프로그램 구동

(steemit) user@user-VirtualBox:~$

리눅스 상에 위아 같은 프롬프트 상태일때

mkdir steemit
cd steemit

steemit 폴더를 만들고 위 폴더에 들어가서

vi send_steem_users_from_excel.py

또는

nano send_steem_users_from_excel.py
gedit send_steem_users_from_excel.py

리눅스에서 편안한 편집기로 ^^ 전체소스를 복사하셔서 저장 합니다.

프로그램 실행

python send_steem_users_from_excel.py

위와 같이 실행하시면 됩니다.

음 여기서 조금 걱정 되는 것은 꺼꾸로 리눅스에서 엑셀을 어떻게 준비할 것인가네요

엑셀파일은 윈도우즈나 맥에서 만들어서 업로드 한다(?)
오픈오피스를 설치하고, xlsx로 저장한다

정도가 되겠습니다.

감사합니다.



Posted through the ECblog app (https://blog.etain.club)

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

따라하다 보니 막히는 부분이 있었는데~ 이렇게 잘 설명해 주셔서 감사합니다!
다시한번 잘 따라해 보겠습니다~ ^^ 👍👍👍

알려주신대로 암호화 모듈 설치했더니 Steem 잘 불러와 집니다. 고맙습니다! ^^

그래서, 기분좋게
send_steem_users_from_excel.py 를 실행시켰는데요~

에궁... 이런 화면이 나타나네요. ㅠㅠ

혹시 해결책이 있을까요?
제가 이쪽으로 지식이 짧다 보니 계속 귀찮게 해드리는 것 같아 죄송합니다. 시간이 많이 걸리시거나 답변이 곤란하시면 패스하셔도 좋습니다!

1.png

늘 감사드립니다! ^^

리눅스에서 저도 저렇게 오류가 나옵니다. T.T

해당 코드로는 안되서 내일 새벽에 수정 된 코드를 하나 만들어서 발행 하겠습니다.

수정 된 코드는 리눅스에서도 잘 됩니다. ^^

 user@user-VirtualBox:~/steemit$ python send_steem_users_from_excel2.py
Transferred 1.000 STEEM STEEM to kayap with memo: 엑셀파일 테스트 입니다.

에공... 가야태자님도 리눅스에서는 같은 오류가 나는군요.
그래도, 리눅스에서 돌아가는 코드를 찾으셨다니~ 다행입니다!
알려주시면 그 코드로 다시한번 해보겠습니다! 고맙습니다~ ^^

Coin Marketplace

STEEM 0.20
TRX 0.20
JST 0.034
BTC 89955.66
ETH 3105.10
USDT 1.00
SBD 2.98