venvとは?
venv: Python 仮想環境管理によれば、
venv は virtualenv が Python 3.3 から標準機能として取り込まれたもの
らしい。
前提
以下のエントリーにてPython3系のインストールまでやってください。
Vagrant + Ubuntu + VirtualBoxでPythonの環境構築したった
venvでPython環境を構築する
Django Girls Tutorial
現在Rails Tutorialのように日本語でDjangoを学べるネット教材で人気がありそうなのは以下
まずは上記にしたがってコマンドを実行していく。
専用の環境を作成する
python3 -m venv myvenv
アクティベートする
source myvenv/bin/activate
venv が起動すると、プロンプトの行頭に(myvenv)が現れます。
※必要ならpipをインストール
(私の環境ではすでにインストールされていた模様、、、たぶんvenvのpipじゃないと思うんだけど、この辺よくわかってない)
python3 -m pip install --upgrade pip # 私の環境ではすでにあるぜ!って言われてアンスコしてた、、、
設定ファイルを作成する
設定ファイル作成
touch requirements.txt
インストールしたいDjangoのバージョンを指定する
echo Django~=2.0.6 >> requirements.txt
確認する
cat requirements.txt
Djangoをインストールする
pip install -r requirements.txt
プロジェクトディレクトリを作成する
以下、コメントをいただいたものを追記しました。
※最新の環境での動確はしていないため、動作保証できません。ご了承ください。
$ django-admin startproject mysite
を実行して
manage.pyがあるディレクトリでマイグレーションを実行する必要があります。
マイグレーション
python manage.py migrate
サーバ起動
python manage.py runserver 0.0.0.0:8080
トラブルシューティング
Invalid HTTP_HOST header: '192.168.33.10:8080'. You may need to add '192.168.33.10' to ALLOWED_HOSTS.
mysite/settings.py
にて以下を記載する。
ALLOWED_HOSTS = ['192.168.33.10']
完成
http://192.168.33.10:8080/
にアクセスする。
※vagrantの public_network
とかのIPを見てください。
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
config.vm.network "forwarded_port", guest: 8000, host: 9080, host_ip: "127.0.0.1"
config.vm.network "private_network", ip: "192.168.33.10"
こんな感じになれば成功!!
サーバを停止する
以下の画面にて ctrl + C
するとコマンド受付状態に戻る。
ちなみにサーバ起動状態は (サーバ)コンソール
とかって言う。
(myvenv) vagrant@ubuntu-xenial:~/tmp/djangogirls$ python manage.py runserver 0.0.0.0:8080
Performing system checks...
System check identified no issues (0 silenced).
February 03, 2019 - 17:36:41
Django version 2.0.10, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8080/
Quit the server with CONTROL-C.
[03/Feb/2019 17:37:21] "GET / HTTP/1.1" 200 16510
virtualenvをディアクティーベート(無効化)する
サーバ停止できたらvenvも止めておく。
環境が消えるわけではない!(電源を消しておくイメージ!)
deactivate
Python基礎
こちらは環境構築とは関係ありません。
私の個人的な備忘録となります。
ご了承くださいませ。
Python2と3の違い
print 123 # Python2
print(123) # Python3
Python3で2の記法で記述すると SyntaxError: invalid syntax
になった。
dictionary
ディクショナリーというオブジェクトの型の名前。
辞書型と呼ぶ。
このオブジェクトはキーと値のペアの集合で表される。
Rubyで言うところのHash。
setdefaultメソッド
要素の追加
mydict = {"ai":1, "apple":2, "attribute":3}
mydict.setdefault("authenticate", 4)
print(mydict) # => {"ai":1, "apple":2, "attribute":3, "authenticate": 4}
popメソッド
要素の削除
# (続き)
mydict.pop("apple")
print(mydict) # => {"ai":1, "attribute":3, "authenticate": 4}
clearメソッド
要素の一括削除
# (続き)
mydict.clear()
print(mydict) # => {}
条件分岐
"else if〜"みたいな書き方は elif
と書く。
Rubyなら elsif
だし言語ごとに色がある。
if name == 'Ola':
print('Hi Ola!')
elif name == 'Sonja':
print('Hi Sonja!')
else:
print('Hi anonymous!')
繰り返し(ループ)
for i in range(1, 6):
print(i)
Pythonでフィボナッチ数
言葉通りに実装すると再帰的になって、数が大きくなればなるほどつらい。
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
print fibonacci(10)