web-dev-qa-db-ja.com

PowerShellのvirtualenv?

こんにちはpythonistaの皆さん、PowerShellで virtualenv を使用すると問題が発生するようです。

PowerShellなどで環境をアクティブ化しようとすると、.

> env/scripts/activate

.. 何も起こりません。 (シェルプロンプトとPATH環境変数が変更されているはずです。)

問題は、PowerShellが新しいコマンドを生成することだと思います。 activate.batを実行するためだけのプロセス。つまり、変更をレンダリングすると、完了後にactivate.batはシェルを無効にします。

この問題の回避策はありますか? (私は今のところcmd.exeを使い続けています)

36
utku_karatas

更新:以下の回答は古くなっています。さて、activate.ps1 (のではなく activate.bat)Powershell環境からアクティベートします。

ここ は、環境変数を永続的に変更するバッチファイルを実行できるようにするPowershellスクリプトを含む投稿です。スクリプトは、環境変数の変更を呼び出し側のPowerShell環境に反映します。

18
Vinay Sajip

virtualenvの最新バージョン は、PowerShellをそのまま使用できます

ただ実行することを確認してください:

Scripts\activate.ps1

の代わりに

Scripts\activate

後者はactivate.batを実行しますが、PowerShellでは機能しません。

69
jsalonen

簡単な回避策は、cmdを呼び出してから、cmdセッション内からactivate.batを実行することです。例えば:

PS C:\my_cool_env\Scripts> cmd
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\my_cool_env\Scripts>activate.bat
(my_cool_env) C:\my_cool_env\Scripts>
16
elliott

仮想環境フォルダーのScriptsディレクトリ内には、コマンドを実行している場所に応じて使用できるいくつかのアクティベーションスクリプトがあります。 Windows PowerShellから仮想環境をアクティブ化しようとしている場合は、次のコマンドを使用してみてください。

. .\env\Scripts\activate.ps1

システムで無効化されているアクティベーションスクリプトに関するエラーを受け取った場合、まずシステムで実行ポリシーの変更を呼び出す必要があります。これは、管理者として行う必要があります。

これを行うには:

1)PowerShellアプリケーションを右クリックし、[管理者として実行]を選択します。

2)次のコマンドを実行します:Set-ExecutionPolicy Unrestricted

3)アクティベーションコマンドを再実行します:. .\env\Scripts\activate.ps1

9
zhijazi

これを試して: . .\env\Scripts\activate.ps1ドットとスペースを見る

4
Yihe

このエラーは、ユーザーが承認しないとシステムでスクリプトを実行できないセキュリティ対策が原因で発生します。これを行うには、管理者権限を持つPowerShellを開き(メインメニューでPowerShellを検索し、コンテキストメニューから[管理者として実行]を選択します)、次のように入力します。

set-executionpolicy remotesigned

詳細: http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/

4
sanfirat

それをアクティブにするための小さなスクリプトを書きました。

# Don't forget to change execution policies
# Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
# More info https://docs.Microsoft.com/en-us/powershell/module/Microsoft.powershell.core/about/about_execution_policies?view=powershell-7

if (Test-Path env:VIRTUAL_ENV) {
    deactivate  
}

$env = .\venv\Scripts\activate.ps1

# use $env to set variables, for instance $env:FLASK_APP = "main.py"

PowerShell拡張子.ps1を付けてファイルを保存することを忘れないでください。

私もその問題がありました!そして最後に、ウィンドウで何をすべきかを見つけました...

次の手順に従ってください。

1)ウィンドウの検索バーに「powershell」と入力して右クリックし、[管理者として実行]を選択します

(そのチェックに問題がある場合 this

2)PowerShellで次のコマンドを実行します:Set-ExecutionPolicy Unrestricted

3)アクティベーションコマンドを再実行します。.\\env\Scripts\activate.ps1

(正確なコマンドを実行してください!環境の名前に注意してください。)

以上です!:)

0

同様の問題がありました。いろいろな方法を試しました。実行ポリシーも変更されました。何もうまくいきませんでした。問題は、Activate.ps1へのパスを囲む二重引用符を削除する必要があったことです。

0
sreagm

Windows PowerShellでは、env/Scriptsフォルダーから入力する必要があります。

. ./activate
0
Boxtell

Windowsユーザー

Powershellの場合:

  1. Powershellを管理者として実行
  2. 次のコマンドをコピーして貼り付けます:set-executionpolicy remotesigned
  3. メッセージに同意します。

最後に、実行

your_virtualenv_name\Scripts\activate.ps1

の代わりに

your_virtualenv_name\Scripts\activate.bat

CMDで実行:

your_virtualenv_name\Scripts\activate.bat
0
user 451

開発サーバーのアクティブ化と起動を処理するために、この短いスクリプトを書きました。

$ep = Get-ExecutionPolicy

if ($ep -eq 'RemoteSigned') {

    $root = "C:\Users\ALeven\OneDrive\!code_projects\!Django_projects\"

    $test = Read-Host -Prompt 'Would you like to activate the python environment? y/n'
    if ($test -eq 'y') {

        $activatestr = ($root + "\work_venv\Scripts\Activate.ps1")
        & $activatestr

    }

    $test = Read-Host -Prompt 'Would you like to run the python server? y/n'

    if ($test -eq 'y') {

        $whichserver = Read-Host -Prompt 'Enter the name of the project.'
        $path = ($root + $whichserver)
        $runserverstr = ($path + "\manage.py")
        python.exe $runserverstr runserver

    }

} else {

    Write-Host "Execution Policy does not allow this script to run properly"
    Write-Host "If you have the proper permissions,"
    Write-Host "Please close powershell,"
    Write-Host "then right click the powershell icon and run as administrator"
    Write-Host "Once in the powershell environment, execute the following:"
    Write-Host "Set-ExecutionPolicy RemoteSigned -Force"

}

楽しい。

0
Jaberwocky

最初に実行するだけ

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

その後

./env/Scripts/activate.sp1

それで全部です

0
N.Nonkovic