$ python
>>> import sys
>>> sys.path
でパス一覧が出るので探すと分かる >>> exit()でpythonコマンド終了
例えば Cloud functionsなら requrements.txtに google-api-python-client==3.3.2と記載し
PyPI · The Python Package Index でバージョンを探す
コードに from google.cloud import bigqueryと宣言する
requirementがpipインスコ
import フォルダ.ファイル名
from フォルダ.ファイル名 import *
上下同じだが、fromは一部を指定し直接使うという意、*は非推奨
つまり
import hello なら下記とする必要があるが
print(hello.hello)
from hello import hello なら省略ができ下記で良い
print(hello)
from フォルダ名 の場合
そのフォルダ名の中に __init__.pyがあれば其れ
from .xxx import aaa の.の意味は?
mainに対するモジュールから見て相対で隣
モジュール検索パスを出す
from pprint import pprint
import sys
pprint(sys.path)
■pipインスコ
PyPIでサードパーティライブラリを管理していてインスコ可
setup.pyが含まれたローカルディレクトリも指定しインスコ可
eオプションで編集可能な状態でインスコ
--userで~/.local下の管理権限不要なユーザディレクトリ以下でシステムが汚れない
--userなしで/usr下にインスコ
pip install --user -e unko
pip3 install pipenv
pyenv install --list インストールできるもの
pyenv install 3.8.8 指定verをインスコ
pyenv global 3.8.8 デフォルトに指定
.python-versionファイルをGITに載せ管理したい?
pipenvはPipfileとPipfile.lockを利用しpipでrequrements.txtを用いるよりも強力
PipfileとPipfile.lockとrequirementsをGITに載せ管理したい?
pipenv --python 3.8.8 など最初にpyバージョンをpipfileに記載
pipenv install "google-cloud-tasks==1.5.0" バージョン無しでも有りでも入れられる
Pipfileを書き換える方法
[packages]
google-cloud-tasks = "==1.5.0"
protobuf = "*"
そして下記cmdでインスコ
pipenv install PipefileからインストールしPipefile.lockを更新
pipenv sync Pipfile.lockの最新を取得し環境更新(Pipefileは使わない)
pipenv shell 仮想環境を起動
pipenv run python main.py
他に
pipenv uninstall google-cloud-tasks アンインスコ
Pipfile, Pipfile.lockがあれば pip syncでOKだがrequirements.txtも使える
pipenv lock -r > requirements.txt 生成
pipenv install -r requirements.txt
pipenvのバージョンが古いと依存関係、Ver整合性で問題が起きやすい
pipenv --version
pip install pipenv
pipenv update
pipenv upgrade <パケ>でやり直す
■assertでテスト
assert文は組み込み定数__debug__がTrueの時のみ実行されます
実行コマンドにオプションに-Oをつけると__debug__がFalseになりassert文が無効に
def func_so(a, b):
c = a * b
return
def test():
assert(func_so(1,2) == 2)
if __name__ == "__main__":
test()
main()
■個別
import dataclasses
import datetime
pip install pyyaml > import yaml
pip install requests > import requests
Python + VSCode の環境構築 20240604 (zenn.dev)↓本家
/// BANGBOO BLOG /// - Python