web-dev-qa-db-ja.com

pipenv:インストールされているフォルダでのみ機能しますか?

Pipenvは、Pipfileが存在するディレクトリでのみ機能するようです。多分私はそれが設計されていない方法でそれを使用しようとしています。

たとえば、「leo」(エディタ)というツールをインストールしたところ、多くのフォルダに移動してpipenv run Leoすると、別の仮想環境のインストールが開始されます。回避策は何ですか?

9
Jeremy Chen

次を実行できます:(任意のディレクトリから)

pew workon my-virtualenv-of-choice
pipenv run leo

私が理解している限り、pipenvで既に仮想環境を実行している場合は、pipenvでテキストエディターを実行するようなコマンドしか実行できません。そうでない場合は、現在のディレクトリに新しい仮想環境を作成し、その中でコマンドを実行します。

結果として pipenv --helpは、実行コマンドについて次のように述べています。

virtualenvにインストールされているコマンドを実行します。

3
userzxcv

あなたの質問に対する直接の答えではありませんが、別のディレクトリからコンソールアプリを実行する問題にも遭遇しました。これが最良の/「最も移植性のある」ソリューションであるかどうかはわかりませんが、中間体としてbashスクリプトを使用することに満足している場合:

#!/usr/bin/env bash

CURRENT="$(dirname "$0")"
ROOT_DIR="$CURRENT/.."

(cd $ROOT_DIR && pipenv run python3 app/console.py "$@")

私のプロジェクトのディレクトリ構造は次のようになります:

.
├── Pipfile
├── Pipfile.lock
├── app
│   ├── __init__.py
│   └── console.py
└── bin
    └── console

そして今、あなたは/absolute/path/to/bin/console どこからでも。

2
Supericy

Pipfileが存在するディレクトリで、

pipenv --venv

これにより、仮想環境が配置されているパスが表示されます。 /Users/yourname/.local/share/virtualenvs/yourproject-8XhejQjjなどのそのパスをコピーします。他のフォルダでは、sourceを使用してvenvをアクティブ化できます。例:

source /Users/yourname/.local/share/virtualenvs/yourproject-8XhejQjj/bin/activate

これは Ken Reitzの2018 PyDataトーク でカバーされています。

2
XiUpsilon

はい、PipenvはPipfileがあるディレクトリ(またはそのサブディレクトリ)でのみ機能します。

Pythonプログラムを独自の仮想環境にインストールする方法が必要な場合でも、どこでもそれらを使用することができますが、 pipsi を使用できます–インストールが完了すると、 pipsi install <package>を実行するだけで、Pythonパッケージを独自のvirtualenvにインストールできます。

(勇気がある場合、 my pipsiのフォーク には、いくつかの修正と改善があり、まだメインリポジトリに反映されていません。--src git+https://github.com/anowlcalledjosh/pipsi@develop#Egg=pipsiを渡してインストールできます。 get-pipsi.pyスクリプト。)

1
Josh

これをグーグルするのは本当に難しいですが、私は最良の解決策を見つけました。

Pipenvを使用して任意の場所で仮想環境を簡単にアクティブ化するには、pewを使用できます。

pip install pewを実行すると、「pew workon myvenv」を簡単に実行できます。

Pewは内部でpipenvを使用しており、Windowsでも動作します。

1
Jeremy Chen