'python'에 해당되는 글 7건

  1. 2022.12.14 [Python] Script 기반 파이썬 개발 진행
  2. 2022.03.14 [Python] pip upgrade.
  3. 2022.01.24 [Python] pyenv install from local tar.xz 설치 하기.
  4. 2021.04.19 [Python] 비동기 요청 예제
  5. 2020.10.22 [Python] pyenv 구성 하기 on Mac
  6. 2020.01.17 [Python] MacOS에서 awscli 설치 오류
  7. 2018.05.03 [Python] virtualenv 구성 맛보기

[Python] Script 기반 파이썬 개발 진행

ITWeb/개발일반 2022. 12. 14. 10:04

파이썬을 사용 할 때 라이브러리라 환경에 따라 동작이 제대로 되지 않는 경우가 있어서 개발 환경에 대한 표준화를 고민 하는게 좋습니다.

그냥 스크립트만 작성해서 실행 하고 싶을 때라도 기본 vitualenv 환경에서 구성하고 실행 하는게 좋겠죠.

 

패키지구조)

ㄴ hello_world.py
ㄴ requirements.txt
ㄴ venv_wrapper.sh

 

venv_wrapper.sh)

python3 -m venv venv
. venv/bin/activate
pip3 install -r requirements.txt
python3 hello_world.py

 

이런 방식이 싫다면 도커 기반으로 구성을 해도 좋습니다.

:

[Python] pip upgrade.

ITWeb/개발일반 2022. 3. 14. 12:06

 

pip install 하다 보면 pip upgrade 를 하라는 메시지를 접할 때가 있습니다.

제공 하는 메시지는 'pip install --upgrade pip' 인데 이대로 실행 했을 경우 잘 안될 때는 아래와 같이 user 옵션을 주고 실행해 보시면 됩니다.

 

$ pip install --user --upgrade pip

 

:

[Python] pyenv install from local tar.xz 설치 하기.

ITWeb/개발일반 2022. 1. 24. 12:12

맥북 기준으로 작성 합니다.

 

$HOME/.pyenv/cache

위 경로에 설치 하고자 하는 python tar.xz 파일을 다운로드 받아서 넣어 두고 진행을 하면 됩니다.

 

$ wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz 

$ mv ~/Downloads/Python-3.9.9.tar.xz ~/.pyenv/cache/

$ pyenv install 3.9.9

 

이와 같이 하면 설치가 가능 합니다.

사내 보안 정책으로 설치가 안될 경우 활용 하면 됩니다.

 

:

[Python] 비동기 요청 예제

ITWeb/개발일반 2021. 4. 19. 18:47

비동기 처리 하는거 예제가 필요해서 급조 합니다.

 

참고문서)

docs.python.org/ko/3/library/asyncio.html

docs.python-requests.org/en/master/

$ pyenv virtualenv 3.8.6 helloworld
$ pyenv activate helloworld
(helloworld) $ pip install requests asyncio
(helloworld) $ python asyncio.py

(helloworld) $ vi asyncio.py
import requests
import string
import random
import asyncio

async def requestAsyncio(content, cid, aid):
    url = "http://localhost:8080/helloworld"

    payload={}

    headers = {
      'accept': 'application/json, text/plain, */*',
      'accept-encoding': 'gzip, deflate, br',
      'accept-language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,ja-JP;q=0.6,ja;q=0.5,zh-MO;q=0.4,zh;q=0.3',
      'content-type': 'application/x-www-form-urlencoded',
      'origin': 'http://localhost:8080',
      'referer': 'http://localhost:8080/helloworld',
      'sec-fetch-dest': 'empty',
      'sec-fetch-mode': 'cors',
      'sec-fetch-site': 'same-site',
      'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
    }

    response = requests.request("POST", url, headers=headers, data=payload)

    print(response.status_code)
    print(response.text)

if __name__ == "__main__":
    letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

    cid = "helloworld"
    aid = "python"
    content1 = random.choice(letters)
    content2 = random.choice(letters)

    loop = asyncio.get_event_loop()
    loop.run_until_complete(asyncio.gather(requestKhan(content1, cid, aid), requestKhan(content2, cid, aid)))
    loop.close()
    
(helloworld) $ python asyncio.py

(helloworld) $ pyenv deactivate helloworld
$

 

:

[Python] pyenv 구성 하기 on Mac

ITWeb/개발일반 2020. 10. 22. 11:51

기존 Mac 에 설치 되어 있던 2.7.x 를 사용하지 않으려면 User 계정의 .bash_profile 이나 .zshrc 등에 alias 설정을 통해서 3.x 만 사용 하도록 하면 됩니다.

 

$ vi .zshrc

alias python=/usr/bin/python3
alias pip=/usr/bin/pip3


python 으로 개발 시 버전별로 다르게 해야 하는 경우가 많이 발생 합니다.

예전에는 virtualenv 를 사용 했었는데 pyenv 라는 좋은 툴이 있으니 이걸 그냥 사용하는게 좋겠죠.

 

# 설치하기

$ brew install pyenv
$ brew upgrade pyenv

# bash 환경

$ vi ~/.bash_profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"


eval "$(pyenv init -)"


$ source ~/.bash_profile

# zsh 환경
$ vi .zprofile or .zshrc
PYENV_ROOT="$HOME/.pyenv"
PATH="$PYENV_ROOT/bin:${PATH}"

export PYENV_ROOT
export PATH

eval "$(pyenv init -)"

 

$ source ~/.zprofile

$ pyenv install --list
$ brew install zlib
$ pyenv install 3.8.6
$ pyenv versions

# pyenv commands
https://github.com/pyenv/pyenv/blob/master/COMMANDS.md#pyenv-commands

# 버전 변경 쉘
$ pyenv shell 3.8.6
$ python3.8.6 --version

or

$ python --version

# shell 변경
$ python --version
Python 3.8.1


$ pyenv shell 3.8.6
$ python --version
Python 3.8.6


$ pyenv shell --unset
$ python --version
Python 3.8.1

# virtualenv 설치
$ brew install pyenv-virtualenv

# bash 환경
$ vi ~/.bash_profile

eval "$(pyenv virtualenv-init -)"

 

$ source ~/.bash_profile

# zsh 환경
$ vi .zprofile or .zshrc

eval "$(pyenv virtualenv-init -)"

 

$ source ~/.zprofile

# virtualenv 생성
$ pyenv virtualenv 3.8.6 helloworld
$ pyenv activate helloworld
(helloworld) $
$ pyenv deactivate helloworld

# virtualenv 삭제
$ pyenv virtualenvs
$ pyenv uninstall helloworld

 

:

[Python] MacOS에서 awscli 설치 오류

ITWeb/개발일반 2020. 1. 17. 13:32

보던 책이 있어서 그냥 한번 따라 해봤는데 에러가 발생 해서 수정 하는 과정을 그냥 기록해 봤습니다.

 

homebrew installation)
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

python installation for awscli)
$ brew install python

- python 3.4 이상 설치
https://www.python.org/doc/sunset-python-2/

pip installation)
$ sudo easy_install pip

awscli installation)
$ sudo pip install awscli

- pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 에러 발생
$ python3 --version
Python 3.8.1

$ python --version
Python 3.6.6

$ rm -rf 로 3.6.6 을 삭제
$ brew uninstall python
https://www.python.org/downloads/ 에서 pkg 파일로 다운로드 후 재 설치
$ sudo pip3 install awscli
$ pip3 install --upgrade pip
$ mkdir -p .pyenv/shims
$ ln -s /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 python

 

$ pip --version
pip 19.3.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)

$ pip3 --version
pip 19.3.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)

:

[Python] virtualenv 구성 맛보기

ITWeb/개발일반 2018. 5. 3. 12:07

먼저 무작정 하다 보면 에러 부터 경험 할때가 많이 있습니다.

Anaconda 를 설치 해 놓고 잊고 있었는데 에러 부터 나와서 뭐지 했내요.


python virtualenv 구성 시 아레와 같은 에러 발생시 해결 방법



$ virtualenv venv

New python executable in /Users/xxx/Work/apps/venv/bin/python

Installing setuptools, pip, wheel...

  Complete output from command /Users/xxx/Work/apps/venv/bin/python - setuptools pip wheel:

  Traceback (most recent call last):

  File "<stdin>", line 4, in <module>

  File "/Users/xxx/anaconda2/lib/python2.7/tempfile.py", line 32, in <module>

    import io as _io

  File "/Users/xxx/anaconda2/lib/python2.7/io.py", line 51, in <module>

    import _io

ImportError: dlopen(/Users/xxx/Work/apps/venv/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder

  Referenced from: /Users/xxx/Work/apps/venv/lib/python2.7/lib-dynload/_io.so

  Expected in: flat namespace

 in /Users/xxx/Work/apps/venv/lib/python2.7/lib-dynload/_io.so

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

...Installing setuptools, pip, wheel...done.

Traceback (most recent call last):

  File "/Users/xxx/anaconda2/bin/virtualenv", line 11, in <module>

    sys.exit(main())

  File "/Users/xxx/anaconda2/lib/python2.7/site-packages/virtualenv.py", line 712, in main

    symlink=options.symlink)

  File "/Users/xxx/anaconda2/lib/python2.7/site-packages/virtualenv.py", line 953, in create_environment

    download=download,

  File "/Users/xxx/anaconda2/lib/python2.7/site-packages/virtualenv.py", line 904, in install_wheel

    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)

  File "/Users/xxx/anaconda2/lib/python2.7/site-packages/virtualenv.py", line 796, in call_subprocess

    % (cmd_desc, proc.returncode))

OSError: Command /Users/xxx/Work/apps/venv/bin/python - setuptools pip wheel failed with error code 1


Reference)

https://github.com/certbot/certbot/issues/2850


$ pip uninstall virtualenv

$ conda install virtualenv


# 아래와 같이 하면 실행한 위치에 venv 라는 폴더가 생성이 됩니다.

$ virtualenv venv --distribute

New python executable in /Users/xxx/Work/apps/venv/bin/python

copying /Users/xxx/anaconda2/bin/python => /Users/xxx/Work/apps/venv/bin/python

copying /Users/xxx/anaconda2/bin/../lib/libpython2.7.dylib => /Users/xxx/Work/apps/venv/lib/libpython2.7.dylib

Installing setuptools, pip, wheel...done.


# 가상환경 실행

$ source venv/bin/activate

(venv) MacBook-Pro-2:apps xxx$


# 가상환경 빠져나오기

(venv) MacBook-Pro-2:apps xxx$ deactivate


# python 버전별 가상환경 실행

$ virtualenv venv --python=python2.7

or

$ python -m virtualenv venv


$ virtualenv venv --python=python3.6

or

$ python3 -m virtualenv venv


# 가상환경에서 필요한 package 구성 후 설치 모듈을 구성 합니다. (requirements.txt)

$ virtualenv venv2.7 --python=python2.7

Running virtualenv with interpreter /Users/xxx/anaconda2/bin/python2.7

New python executable in /Users/xxx/Work/apps/venv2.7/bin/python2.7

copying /Users/xxx/anaconda2/bin/python2.7 => /Users/xxx/Work/apps/venv2.7/bin/python2.7

copying /Users/xxx/anaconda2/bin/../lib/libpython2.7.dylib => /Users/xxx/Work/apps/venv2.7/lib/libpython2.7.dylib

Also creating executable in /Users/xxx/Work/apps/venv2.7/bin/python

Installing setuptools, pip, wheel...done.

MacBook-Pro-2:apps xxx$ source venv2.7/bin/activate

(venv2.7) MacBook-Pro-2:apps xxx$

(venv2.7) MacBook-Pro-2:apps xxx$ pip install boto3

Collecting boto3

  Downloading https://files.pythonhosted.org/packages/24/ec/7e3c056775ac725b31a7d5d38e6f7f93ac793f50c35a2cd36b4446be426c/boto3-1.7.12-py2.py3-none-any.whl (128kB)

    100% |████████████████████████████████| 133kB 518kB/s

Collecting s3transfer<0.2.0,>=0.1.10 (from boto3)

  Using cached https://files.pythonhosted.org/packages/d7/14/2a0004d487464d120c9fb85313a75cd3d71a7506955be458eebfe19a6b1d/s3transfer-0.1.13-py2.py3-none-any.whl

Collecting jmespath<1.0.0,>=0.7.1 (from boto3)

  Using cached https://files.pythonhosted.org/packages/b7/31/05c8d001f7f87f0f07289a5fc0fc3832e9a57f2dbd4d3b0fee70e0d51365/jmespath-0.9.3-py2.py3-none-any.whl

Collecting botocore<1.11.0,>=1.10.12 (from boto3)

  Downloading https://files.pythonhosted.org/packages/8e/d7/8b4b54f82a1a137f520d8b04f6c7b87b5f4762818100d1f38a0234fbf17c/botocore-1.10.12-py2.py3-none-any.whl (4.2MB)

    100% |████████████████████████████████| 4.2MB 2.6MB/s

Collecting futures<4.0.0,>=2.2.0; python_version == "2.6" or python_version == "2.7" (from s3transfer<0.2.0,>=0.1.10->boto3)

  Downloading https://files.pythonhosted.org/packages/2d/99/b2c4e9d5a30f6471e410a146232b4118e697fa3ffc06d6a65efde84debd0/futures-3.2.0-py2-none-any.whl

Collecting python-dateutil<3.0.0,>=2.1; python_version >= "2.7" (from botocore<1.11.0,>=1.10.12->boto3)

  Downloading https://files.pythonhosted.org/packages/0c/57/19f3a65bcf6d5be570ee8c35a5398496e10a0ddcbc95393b2d17f86aaaf8/python_dateutil-2.7.2-py2.py3-none-any.whl (212kB)

    100% |████████████████████████████████| 215kB 3.8MB/s

Collecting docutils>=0.10 (from botocore<1.11.0,>=1.10.12->boto3)

  Downloading https://files.pythonhosted.org/packages/50/09/c53398e0005b11f7ffb27b7aa720c617aba53be4fb4f4f3f06b9b5c60f28/docutils-0.14-py2-none-any.whl (543kB)

    100% |████████████████████████████████| 552kB 3.8MB/s

Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1; python_version >= "2.7"->botocore<1.11.0,>=1.10.12->boto3)

  Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl

Installing collected packages: six, python-dateutil, jmespath, docutils, botocore, futures, s3transfer, boto3

Successfully installed boto3-1.7.12 botocore-1.10.12 docutils-0.14 futures-3.2.0 jmespath-0.9.3 python-dateutil-2.7.2 s3transfer-0.1.13 six-1.11.0

(venv2.7) MacBook-Pro-2:apps xxx$ pip freeze > requirements.txt

(venv2.7) MacBook-Pro-2:apps xxx$ deactivate

MacBook-Pro-2:apps xxx$ cat requirements.txt

boto3==1.7.12

botocore==1.10.12

docutils==0.14

futures==3.2.0

jmespath==0.9.3

python-dateutil==2.7.2

s3transfer==0.1.13

six==1.11.0


만들어진 requirements.txt 파일을 가지고 설치는 아래와 같이 하시면 됩니다.


$ pip install -r requirements.txt 

or

$ pip3 install -r requirements.txt 


: