- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
** Pythonを使ってみよう [#peb4c9dd]
- 概要
-- シンプルで習得がしやすいオブジェクト指向言語
-- データ解析、機械学習
- 公式サイト
-- https://www.python.org/
- 環境
-- Vagrant ローカル開発環境 (CentOS 6.7)
** Python 3 インストール [#j4dacc82]
- CentOS 6 標準では Python 2 がインストールされているため pyenv を利用して Python 3 をインストール
- epel リポジトリをダウンロード
$ wget https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
- epel リポジトリをインストール
$ sudo rpm -Uvh epel-release-6-8.noarch.rpm
- Ansible インストール
$ sudo yum -y install ansible
$ ansible --version
ansible 2.3.0.0
- git, patch をインストール
$ sudo yum -y install git
$ sudo yum install patch
- Playbook 作成
$ vi playbook.yml
---
- hosts: localhost
connection: local
sudo: yes
vars:
- python_version: 3.5.2
tasks:
- name: disable iptables
service: name=iptables state=stopped enabled=no
- name: install libselinux-python
yum: name=libselinux-python state=latest
- name: remove localtime
file: path=/etc/localtime state=absent
- name: change timezone
file: src=/usr/share/zoneinfo/Asia/Tokyo dest=/etc/localtime state=link force=yes mode=0644
- name: change locale
lineinfile: >-
dest=/etc/sysconfig/i18n
state=present
regexp=^LANG=
line='LANG="ja_JP.UTF-8"'
- name: install dependencies
yum: name={{item}} state=present
with_items:
- gcc
- openssl
- openssl-devel
- rpm-build
- gcc-c++
- bzip2
- bzip2-devel
- libtool
- zlib
- zlib-devel
- httpd-devel
- openssl-devel
- curl-devel
- ncurses-devel
- gdbm-devel
- readline
- readline-devel
- sqlite
- sqlite-devel
- libyaml-devel
- libffi-devel
- bison
- name: check pyenv installed
command: test -x /home/vagrant/.pyenv
register: pyenv_present
ignore_errors: yes
become: no
- name: git clone pyenv
git: repo=https://github.com/yyuu/pyenv.git dest=/home/vagrant/.pyenv
when: pyenv_present.rc != 0
become: no
- name: check pyvirtual installed
command: test -x /home/vagrant/.pyenv/plugins/pyenv-virtualenv
register: pyvirtual_present
ignore_errors: yes
become: no
- name: git clone pyenv-virtual
git: repo=https://github.com/yyuu/pyenv-virtualenv.git dest=/home/vagrant/.pyenv/plugins/pyenv-virtualenv
when: pyvirtual_present != 0
become: no
- name: update pyenv
command: git pull --rebase chdir=/home/vagrant/.pyenv
become: no
- name: update pyenv-virtualenv
command: git pull --rebase chdir=/home/vagrant/.pyenv/plugins/pyenv-virtualenv
become: no
- name: check python installed
shell: /bin/bash -lc "pyenv versions | grep {{python_version}}"
register: python_installed
ignore_errors: yes
become: no
- name: install python
shell: /bin/bash -lc "pyenv install {{python_version}} && pyenv rehash && pyenv global {{python_version}}"
when: python_installed.rc != 0
become: no
$ ansible-playbook playbook.yml
- Playbook 実行
$ ansible-playbook playbook.yml
- &color(red){※}; エラーとなるため下記を手動で実施 (to be automated)
$ vi .bashrc
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi
$ source ~/.bashrc
- Playbook 実行
- Playbook 再実行
$ ansible-playbook playbook.yml
- Python バージョン確認
$ python -V
Python 3.5.2
- 作業ディレクトリ
$ pwd
/home/vagrant/python3_lessons
** はじめてのPythonプログラム [#x1a702dc]
- インタラクティブモード
$ python
Python 3.5.2 (default, May 20 2017, 02:46:30)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 3 + 2
5
>>> exit()
- スクリプト作成 (myapp.py)
# coding: utf-8
print("Hello World")
- 実行結果
$ python myapp.py
Hello World
- コメント
# coding: utf-8
"""
Comment
Comment
Comment
"""
# Comment
print("Hello World")
- Python 2 と Python 3 の違い
-- Python 2 では print に括弧は不要だが Python 3 では必須
-- Python 2 では日本語コメントを記載する場合に # coding: utf-8 を明記したが Python 3 では必須ではない