web-dev-qa-db-ja.com

virtualenv v16.7.2 powershell activateスクリプト:「このスクリプトを「ソース」にする必要があります:PS>。。\ ENV \ Scripts \ activate」エラー

問題

python v.3.7.4のvirtualenvの最新バージョン(16.7.2)には、「activate.ps1」スクリプト用の4つの追加行があり、Windows10 powerhsellで実行するとエラーが発生します:You must 'source' this script: PS> . .\ENV\Scripts\activateどうすれば修正できますか? (私は、他のフォーラムの質問で述べられたすべて、およびWindowsとPowershellに関連するvirtualenvのマニュアルを読んで実行したことに注意してください。)

私が取った手順/試みたこと:**

実行ポリシーをRemoteSignedに設定しました(他のフォーラムで推奨されています)。

Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

Virtualenvをアクティブにしたいときは、.\ENV\Scripts\activate

問題があるところ

問題は、新しい仮想環境を作成したときにvirtualenvによって自動生成されるactivate.ps1スクリプトの3〜6行目です。

if (@($null,"Internal") -notcontains $myinvocation.commandorigin) {
    Write-Host -Foreground red "You must 'source' this script: PS> . $($myinvocation.invocationname)"
    exit 33
}

のようだ $myinvocation.commandoriginInternalではなくRunspaceに設定されます

質問

どうすれば修正できますか?何か案は?ありがとう:)))すべての自動生成を手動で調整したくないことに注意してくださいactivate.ps1ファイル。

8
ffarhour

そのエラーメッセージを見てみましょう:

You must 'source' this script: PS> . .\ENV\Scripts\activate

うーん...-PS>はおそらく単なるプロンプトなので、次のようになります。

  . .\ENV\Scripts\activate
# ^
# |
# Check out this guy

つまり、孤独な.パスの前、つまり、Powershellのdot-source operatorです。

ドキュメント によると、

現在のスコープでスクリプトを実行し、スクリプトが作成する関数、エイリアス、変数を現在のスコープに追加します。

私はvirtualenvを確認していませんが、いくつかの変数を定義して、スクリプトの実行後にこれらの変数が確実に保持されるようにするには、現在のスコープで実行する必要があると思います。

だからこれはそれを修正するために実行しなければならないliteralコマンドです:

. .\ENV\Scripts\activate
9

参照用にスクリーンショットが添付されています。 同じ問題が発生しましたが、次のようにしました。

  1. 新しい仮想環境を作成します。

    python -m venv directory

  2. 新しく作成されたディレクトリに移動します。

    cd directory

  3. 仮想環境をアクティブ化します。

    .\Scripts\activate

これで私の問題は解決しました。それが役に立てば幸い...

4
Marothi Mahlake

私もこの問題に直面しました。これを解決するために、次のように新しい仮想環境を作成しました。

python -m venv directory-name

有効にするために:

Scripts>./activate

そして今それはうまく働いています...

4
Shamim Hossen