1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPしか知らない自分がPythonを始めてみた — 環境構築から最初の壁まで

1
Last updated at Posted at 2026-04-15

はじめに

Python案件に入ることになった。

PHPエンジニアとして数年やってきたけど、Pythonはほぼ未経験。

とりあえず環境構築からやってみたので、詰まったところを中心にメモしておく。同じようにPHPからPythonに移る人の参考になれば。


環境構築 — まずpyenvを入れた

PHPだとphpenvやbrewで複数バージョン管理するのが定番だけど、Pythonも同じようにバージョン管理ツールがある。

よく名前が挙がるのが pyenv。phpenvとほぼ同じ概念なので、ここは比較的すんなり入れた。

# Homebrewで入れる(Mac)
brew install pyenv

# .zshrcに追記
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# バージョン確認
pyenv install --list | grep "3\."

# 最新安定版を入れる
pyenv install 3.12.3

# グローバルに設定
pyenv global 3.12.3

python --version
# Python 3.12.3

ここまでは問題なかった。


最初の壁 — venvって何?

PHPだとcomposerが依存関係をvendor/に突っ込んでくれる。プロジェクトごとにcomposer.jsonがあれば管理できる。

Pythonもpipでパッケージを入れるんだけど、何も考えずにpip installするとグローバルに入る

# これをやると全プロジェクトに影響する(最初やらかした)
pip install requests

PHPのcomposerはデフォルトでプロジェクトローカルに入るのに、pipはそうじゃないのか……と最初混乱した。

そこで出てくるのが venv(仮想環境)

# プロジェクトルートで
python -m venv .venv

# 仮想環境を有効化(Mac/Linux)
source .venv/bin/activate

# Windowsの場合
.venv\Scripts\activate

# 有効化されるとプロンプトが変わる
# (.venv) $

有効化した状態でpip installすれば、.venv/の中だけにパッケージが入る。

pip install requests

# プロジェクトの依存を記録(composer.jsonのrequireに相当)
pip freeze > requirements.txt
# requirements.txt
certifi==2026.4.9
charset-normalizer==3.3.2
idna==3.7
requests==2.31.0
urllib3==2.2.1

他の環境に再現するときは:

pip install -r requirements.txt

composerとpipの対応関係

整理するとこんな感じ。

PHP(composer) Python(pip + venv)
composer.json requirements.txt
vendor/ .venv/
composer install pip install -r requirements.txt
composer require foo pip install foo
composer.lock requirements.txt(freezeで固定)

厳密にはrequirements.txtはlockファイルではないので、再現性をちゃんと担保したいなら Poetry を使うのが今どきの流儀らしい。とりあえず今はpip + venvで覚えることにした。


もう一つの壁 — python2とpython3問題

インターネットで調べると古い記事だとpython2のコードが出てくる。

# python2
print "Hello"

# python3
print("Hello")

pythonコマンドがpython2を指している環境も残っているので、python3python --versionで確認する習慣をつけた。pyenvで3系を入れていれば基本大丈夫だけど、一応。


.venvをGitignoreに追加するのを忘れない

地味に大事。

# .gitignore
.venv/
__pycache__/
*.pyc
.env

__pycache__はPythonが自動生成するキャッシュフォルダ。PHPだとあまり意識しないけど、Pythonだと普通に出てくる。これもignoreしておく。


使ったエディタ

VS Codeに PylanceRuff を入れた。

  • Pylance — 型チェック・補完。PHPIntelliSenseの感覚で使える
  • Ruff — リンター+フォーマッター。めちゃくちゃ速い。PHPのPHP CS Fixerに相当
// settings.json
{
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.formatOnSave": true
  }
}

今回やったこと まとめ

  • pyenvでPythonのバージョン管理
  • venvでプロジェクトごとに仮想環境を作る
  • pipで依存パッケージを管理、requirements.txtに記録する
  • VS Code + Pylance + Ruffで開発環境を整えた

環境構築だけで結構な分量になってしまったが、ここを曖昧にすると後でパッケージ関連のトラブルで詰まるので丁寧にやってよかったと思う。

次は変数・型・スコープあたりのPHPとの違いを整理していく予定。


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?