Python Microsoft Visual Studio 2019 Community PowerShell設定 新しいページはコチラ
提供: yonewiki
(→概要) |
(→概要) |
||
1行: | 1行: | ||
+ | [[Python]]の記事へ戻る | ||
== '''概要''' == | == '''概要''' == | ||
− | + | 正直、皆はまともにVisual StudioでAnacondaをうまく使えているのか?疑問に思う程、使いにくい設定方法であり、ある意味での問題。ある意味での不具合とも言える動き。でもVisual StudioのPytnon環境タブからのPowershell起動はこのPython環境を操作するためとは言っていない。Powershllを起動してやるから後のややこしいPythonを操作出来るまでの手順は自分でやれと言っているのかも知れない。冷たいっす。 | |
52行: | 53行: | ||
でも、このとき作成されたコマンドは正しいのですが、上手く動作しません。もう一度パワーシェルをVisual Studioから起動すると以下のようなエラーが表示されるようになったと思います。 | でも、このとき作成されたコマンドは正しいのですが、上手く動作しません。もう一度パワーシェルをVisual Studioから起動すると以下のようなエラーが表示されるようになったと思います。 | ||
− | + | ||
<syntaxhighlight2 lang="python"> | <syntaxhighlight2 lang="python"> | ||
− | . : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\[ユーザ名]\Documents\WindowsPowerShell\profile | + | . : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\[ユーザ名]\Documents\WindowsPowerShell\profile.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。 |
− | .ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID= | + | |
− | + | ||
発生場所 行:1 文字:3 | 発生場所 行:1 文字:3 | ||
+ . 'C:\Users\[ユーザ名]\Documents\WindowsPowerShell\profile.ps1' | + . 'C:\Users\[ユーザ名]\Documents\WindowsPowerShell\profile.ps1' | ||
63行: | 62行: | ||
+ FullyQualifiedErrorId : UnauthorizedAccess | + FullyQualifiedErrorId : UnauthorizedAccess | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
− | |||
というエラーです。 | というエラーです。 | ||
69行: | 67行: | ||
<syntaxhighlight2 lang="python"> | <syntaxhighlight2 lang="python"> | ||
− | (& " | + | (& "C:\ProgramData\Anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression |
</syntaxhighlight2> | </syntaxhighlight2> | ||
− | + | のような感じのコマンドです。コマンド自体は正しいですが、再度profileとして、profile.ps1を呼び出しても動きません。以下のようなエラーが出ます。 | |
+ | |||
+ | |||
+ | <syntaxhighlight2 lang="python"> | ||
+ | profile : 用語 'profile' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 | ||
+ | 発生場所 行:1 文字:1 | ||
+ | + profile | ||
+ | + ~~~~~~~ | ||
+ | + CategoryInfo : ObjectNotFound: (profile:String) [], CommandNotFoundException | ||
+ | + FullyQualifiedErrorId : CommandNotFoundException | ||
+ | </syntaxhighlight2> | ||
なぜなのか | なぜなのか | ||
90行: | 98行: | ||
− | (base)というプロンプトになったと思います。conda環境を制御できる状態です。conda環境=anacondaと考えてもよいと思います。この道を究めれば、その呼び方の違いの理解が進むと思います。極めている人は、またいい加減なこと言ってるなと思ったと思います。(base)表記は、環境を切り替えると(py38) | + | (base)というプロンプトになったと思います。conda環境を制御できる状態です。conda環境=anacondaと考えてもよいと思います。この道を究めれば、その呼び方の違いの理解が進むと思います。極めている人は、またいい加減なこと言ってるなと思ったと思います。(base)表記は、環境を切り替えると(py38)のようにもなります。無い状態では大したことは出来ないです。その変わり続けて違うシステムを使うとすると、(base)状態では、まずいこともあります。例えばanacondaにも含まれるrubyとかのシステムが別でインストールしている分が動かず、anacond側のあまりruby構築を意識していない方が呼ばれたりする。そんな感じです。その場合にはconda deactivateというコマンドで(base)が外れます。 |
101行: | 109行: | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
− | + | と上記のようなことが行われていることを知ることが出来ます。C:\ProgramData\Anaconda3の部分はAnaconda3をインストールしたフォルダです。このようにパワーシェルを起動するときにオプションが設定されていないといけないことになっています。これはWindowsの都合に合わせてくれています。Anaconda優秀ぅ~!なのに、Visual Studioから起動するときにはこれがありません。いろいろやっても普通に動くわけねぇ。って感じです。パワーシェルをVisual Studioから起動できるリンクの存在意義。なんのために。実に惜しい。VS Codeを使えってことか。同じか。確かめていません。 | |
+ | |||
+ | |||
+ | 上記のconda-hook.ps1その中身はこう書かれています。みなさんのもそれぞれのインストールした場所に合わせてそうなっているので開いてみてください。 | ||
+ | <syntaxhighlight2 lang="python"> | ||
+ | $Env:CONDA_EXE = "C:\ProgramData\Anaconda3\Scripts\conda.exe" | ||
+ | $Env:_CE_M = "" | ||
+ | $Env:_CE_CONDA = "" | ||
+ | $Env:_CONDA_ROOT = "C:\ProgramData\Anaconda3" | ||
+ | $Env:_CONDA_EXE = "C:\ProgramData\Anaconda3\Scripts\conda.exe" | ||
+ | |||
+ | Import-Module "$Env:_CONDA_ROOT\shell\condabin\Conda.psm1" | ||
+ | Add-CondaEnvironmentToPrompt | ||
+ | |||
+ | conda activate | ||
+ | </syntaxhighlight2> | ||
+ | C:\ProgramData\Anaconda3の部分はAnaconda3をインストールしたフォルダです。それで、この中身をコピーして、最初の方に出てきたprofile.sp1にペロッて貼り付けます。 | ||
+ | |||
+ | |||
+ | そしたら、最後にペロッて貼ったやつを動かす権限を得るべく。 | ||
+ | <syntaxhighlight2 lang="python"> | ||
+ | PS $> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser | ||
+ | |||
+ | 実行ポリシーの変更 | ||
+ | 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies | ||
+ | のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170) | ||
+ | で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? | ||
+ | [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y | ||
+ | </syntaxhighlight2> | ||
+ | |||
+ | *Set-ExecutionPolicy RemoteSigned -Scope CurrentUser | ||
+ | |||
+ | これを実行すれば権限を得ることが出来ます。RemoteSignedの部分は以下のようなものが選べます。 | ||
+ | |||
+ | *AllSigned | ||
+ | :全ての権限を取得するわけではありません。通信を介する全てのスクリプト、およびローカルのスクリプトが署名付きで実行されなければならないとされています。opensslとかを使います。あまり実用的ではないです。 | ||
+ | *Bypass | ||
+ | :これが一番、強い権限を取得するといっても過言ではない。何にもチェックもしなければ警告もしない。ある意味危険な状態。権限を得るということは危険なことが出来るということ。 | ||
+ | *RemoteSigned | ||
+ | :これがよく使われる奴です。ローカルはなんでもよくて、通信を介するスクリプトは署名が必要。自分のPCにあるくらいだから安全でしょっていう奴です。ウィンドウズサーバの通常のポリシーです。 | ||
+ | *Restricted | ||
+ | :ウィンドウズクライアントの標準のポリシーです。スクリプトの実行はできません。 | ||
+ | *Undefineed | ||
+ | :他のユーザから設定された権限をクリアするものです。まずはRestrict状態に移行します。 | ||
+ | *Unrestricted | ||
+ | :制限を解除するものです。署名付きスクリプトの場合は内容を確認してから実行します。Windows以外のpowershellでの標準です。 | ||
+ | |||
+ | CurrentUserの部分は以下のものが選べます。 | ||
+ | *Process | ||
+ | :起動したPowershell内だけの権限変更になります。 | ||
+ | *CurrentUser | ||
+ | :自分自身に対しての変更 | ||
+ | *LocalMachine | ||
+ | :全ユーザに対しての変更 | ||
+ | |||
+ | <syntaxhighlight2 lang="python"> | ||
+ | Set-ExecutionPolicy Restricted | ||
+ | </syntaxhighlight2> | ||
+ | |||
+ | 権限は、上記のように戻すことも出来ます。緩めているとうっかり良くないコマンドを打つことはあるかもしれません。気になる人は、使う時にだけこまめにRemoteSignedという権限を得れば良いと思います。-Scopeの後ろは今使っている人にだけというものです。それ以上に必要はないと思います。この他にも権限状態はありますが、それは個別の違う案件で使ってみてください。RemoteSignedとCurrentUserの部分にいろいろなキーワードがあります。 | ||
+ | |||
+ | |||
+ | ここまでの知識を得た上でもう一度、AnacondaがPowershellを起動するときの引数を見てみると、更にBypassという権限で実行したいという感じで設定されていることが把握できると思います。 | ||
+ | |||
+ | |||
+ | |||
+ | [[Python]]の記事へ戻る |