HYT MachineWorks

やったこととか思いついたことをメモしておくブログです。

PowerShellでadmin権限無しでcondaで仮想環境の切替や、proxy越しにcondaやpipを使う

PowerShellとは

Windowsに搭載されている、コマンドプロンプトに変わる次世代のシェル環境になります。以前紹介した、msys2を使ってcondaやpipを使う方法を思いついた際は、管理者権限を持っていないと出来ないと思っていましたができる方法が分かったのでメモします。

hytmachineworks.hatenablog.com

1.PowerShellスクリプトを実行可能にする

 まず、proxyの突破するためにスクリプトを実行する必要があるのですがそのままではエラーが出て、解除するにも管理者権限が無いと実行することが出来ません。

その解除の方法は、以下のサイトを参考にしました。

qiita.com

上記サイトの2番の方法を使いました。ショートカットのリンク先を

編集前
PowerShellのフォルダ\powershell.exe

編集後
PowerShellのフォルダ\powershell.exe -ExecutionPolicy RemoteSigned

といった感じで追記して起動しています。

 2.proxyを設定する。

その上で、proxyを設定するのですがproxyを設定するスクリプトを公開されている方がいるのでそれをありがたく使わせて頂いています。

qiita.com

サイトに書かれたスクリプトを保存して、パスの通ったディレクトリに保存すればOK。私は、condaとpipのために使いたかったのでAnaconda(/Minconda)のインストール先の中のScriptsに保存しました。

> proxy
> conda update -all

って感じで使えるようになります。

condaで仮想環境を切り替える

通常、anacondaやmincondaで開発する際に仮想環境を作って開発することが多いです。その際、

 > conda create -n 新しい環境名 python=3.5

とかして作成して

> activate 新しい環境名

> deactivate

とかやるんですが、標準では、コマンドプロンプト用のスクリプトPowerShellでは何も起こりません。そこでPowerShell用のスクリプトGitHubで公開されていました。

github.com

ダウンロードして、解凍した中にあるactivate.ps1とdeactivate.ps1のスクリプトAnaconda(/Minconda)のインストール先の中のScriptsに保存すればOKなんですが、そのままだとネットで落としてきたスクリプトはそのままでは実行出来ません。そのため、下の画像の様にそれぞれのスクリプトのプロパティを開いてブロックの解除をクリックしないと実行出来ないので注意すること

f:id:hytmachineworks:20170729133701j:plain

作者にサイトによるともともとあるactivate.batとdeactivate.batと干渉しないと言っているけど干渉したのでaliasを設定しました。やり方は、

Set-Alias activate Anaconda(/Minconda)のパス\Scripts\activate.ps1
Set-Alias deactivate Anaconda(/Minconda)のパス\Scripts\deactivate.ps1

で出来ます。ちなみに間違えたときは

Get-Alias

で一覧を確認して、間違って作ったaliasを

Remove-Item alias:間違えて作ったalias

で削除してもう一度作りましょう。

pycairoさえ使わなければmsys2はなくても行けそうな気がしてきた。

windows10のpowershellは背景を透過したりフォントをMyricaを設定できたりいい感じだからもうそれでいいかも。