CIでpipenvを使おうとするとハマったのでメモ
日本語の文献が全然出てこないので書き残しておきます
pipenv<=2023.11.17
で再現する模様
発生していること
pipenvコマンドを実行するときに、環境変数 PIPENV_VERSION
を設定しているとエラーが発生する
❯ pipenv run echo hello
Loading .env environment variables...
hello
❯ PIPENV_VERSION="2023.11.17" pipenv run echo hello
Usage: pipenv [OPTIONS] COMMAND [ARGS]...
Try 'pipenv -h' for help.
Error: Invalid value for '--version': '2023.11.17' is not a valid boolean.
通常利用だと pip install pipenv=2023.11.17
のようにコマンド上で直接指定することがほとんどだと思うが、CI上だと環境変数を利用することが大半のはず
これはgithub actionsでの例
github-actions.yml
env:
PYTHON_VERSION: "v3.11.1"
PIPENV_VERSION: "2023.11.15"
jobs:
setup:
steps:
- name: install python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: install pipenv
run: |
python -m pip install --upgrade pip
python -m pip install pipenv=="${{ env.PIPENV_VERSION }}"
- name: install python dependencies by pipenv
run: |
pipenv sync # このコマンドを実行しようとすると Invalid value が発生する
原因
PIPENV_VERSION
はpipenvが依存しているパッケージclickによって予約されている環境変数なので触れてはいけない…というのが答えらしい
対処方法
PIPENV_VERSION
を PIPENV__VERSION
に書き換えるなど、1文字でも変更してしまえばOK