- 投稿日:2019-02-11T22:38:50+09:00
macOS からの IntelliJ CEのアンインストール方法
- ApplicationsフォルダからIntelliJのアイコンをゴミ箱へ
- 設定やキャッシュファイルの削除。場所は以下の通り
# 設定 ls ~/Library/Preferences/ |grep IdeaIC rm -fr ~/Library/Preferences/IdeaIC2018.2 rm -fr ~/Library/Preferences/IdeaIC2018.3 # キャッシュ ls ~/Library/Caches/ |grep IdeaIC rm -fr ~/Library/Caches/IdeaIC2018.2 rm -fr ~/Library/Caches/IdeaIC2018.3 #プラグイン ls ~/Library/Application\ Support/ |grep IdeaIC rm -fr ~/Library/Application\ Support/IdeaIC2018.2 rm -fr ~/Library/Application\ Support/IdeaIC2018.3 # ログ ls ~/Library/Logs/ |grep IdeaIC rm -fr ~/Library/Logs/IdeaIC2018.2 rm -fr ~/Library/Logs/IdeaIC2018.3環境
- macOS mojave
- IntelliJ CE 2018.03 (アップデート前のものも残っていた模様)
- 投稿日:2019-02-11T22:34:22+09:00
Macで使うmatplotlibのbackendエラー
はじめに
pythonを使ったデータ解析環境として、まず用意したいライブラリの一つが、matplotlibだと思います。少なくとも僕はそう思っています。
なので、macのpython環境でもまずmatplotlibを入れることを考えました。matplotlibのインストールと実行
とりあえずpipenv環境をactivateして、いつも通り下記を実行すると問題なくするっと入ります。
$ pip install matplotlibじゃあいけるだろうと思い、下記を実行。
main.pyimport matplotlib.pyplot as plt a = [1, 2, 5, 4, 3] plt.plot(a)ImportError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.なんかエラー出た。。
macでのmatplotlibインストール エラー対策
どうやらmacあるあるらしく、たくさん解決法が書いてありました。
matplotlibのmatplotlibrcファイルのbackendをmacosxから、TkAggに変えろ、というもの。
早速、matplotlibrcの場所を下記コマンドで調べて書き換える。import matplotlib matplotlib.matplotlib_fname() .venv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc'matplotlibrc# backend: macosx backend: TkAggそして、また実行してみると、
いやいや、グラフ出ないじゃん。ということで、別情報を得て、backendをQtAggに変更するとできると知る。GUIとしてPyQtを使う手のようです。下記の方法でうまくいきました。
$ pip install PyQt5matplotlibrc# backend: macosx # backend: TkAgg backend: Qt5Aggこれで、matplotlibのコードを動かすと・・
動きました。まとめ
とりあえず2019/2の段階では、PyQt5をインストールして、backendをQt5Aggにすれば動きそうです。Qt4Aggにすれば動くという話も出回っていますが、私の環境ではうまくいきませんでした。
皆さんのご参考になれば。
- 投稿日:2019-02-11T22:30:03+09:00
Macで使うmatplotlibのbackendエラー
はじめに
pythonを使ったデータ解析環境として、まず用意したいライブラリの一つが、matplotlibだと思います。少なくとも僕はそう思っています。
なので、macのpython環境でもまずmatplotlibを入れることを考えました。matplotlibのインストールと実行
とりあえずpipenv環境をactivateして、いつも通り下記を実行すると問題なくするっと入ります。
$ pip install matplotlibじゃあいけるだろうと思い、下記を実行。
main.pyimport matplotlib.pyplot as plt a = [1, 2, 5, 4, 3] plt.plot(a)Traceback (most recent call last): File "main.py", line 1, in <module> import matplotlib.pyplot as plt File "/Users/yohei/workspace/project/mnist_dim_reduction/.venv/lib/python3.5/site-packages/matplotlib/pyplot.py", line 2374, in <module> switch_backend(rcParams["backend"]) File "/Users/yohei/workspace/project/mnist_dim_reduction/.venv/lib/python3.5/site-packages/matplotlib/pyplot.py", line 207, in switch_backend backend_mod = importlib.import_module(backend_name) File "/Users/yohei/workspace/project/mnist_dim_reduction/.venv/lib/python3.5/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/Users/yohei/workspace/project/mnist_dim_reduction/.venv/lib/python3.5/site-packages/matplotlib/backends/backend_macosx.py", line 14, in <module> from matplotlib.backends import _macosx ImportError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.なんかエラー出た。。
macでのmatplotlibインストール エラー対策
どうやらmacあるあるらしく、たくさん解決法が書いてありました。
matplotlibのmatplotlibrcファイルのbackendをmacosxから、TkAggに変えろ、というもの。
早速、matplotlibrcの場所を下記コマンドで調べて書き換える。import matplotlib matplotlib.matplotlib_fname() .venv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc'matplotlibrc# backend: macosx backend: TkAggそして、また実行してみると、
いやいや、グラフ出ないじゃん。ということで、別情報を得て、backendをQtAggに変更するとできると知る。GUIとしてPyQtを使う手のようです。下記の方法でうまくいきました。
$ pip install PyQt5matplotlibrc# backend: macosx # backend: TkAgg backend: Qt5Aggこれで、matplotlibのコードを動かすと・・
動きました。まとめ
とりあえず2019/2の段階では、PyQt5をインストールして、backendをQt5Aggにすれば動きそうです。Qt4Aggにすれば動くという話も出回っていますが、私の環境ではうまくいきませんでした。
皆さんのご参考になれば。
- 投稿日:2019-02-11T20:53:27+09:00
Macのデスクトップ割当をCUIで設定する方法
はじめに
私は新しいmacOSが出るたびにクリーンインストールをしています。自動的に環境を構築できるようにするために、シェルスクリプトを書いています。
また、下記の記事のようにアプリケーション毎に仮想デスクトップを割り当てており、それをGUIで設定するのが意外と面倒だったので、仮想デスクトップの割り当てについていろいろ調べてみました。
仮想デスクトップの割り当てを自動化するのが本記事のゴールです。
macOSでディスプレイ1枚で作業する技術実行環境
仮想デスクトップを10画面用意し、以下のように各アプリケーションを割り当てています。
アプリケーション 仮想デスクトップ割当番号 Google Chrome 2 Spark(メーラー) 3 Evernote 4 Fantastical 2 5 iTerm2 7 Tweetbot 9 Line 9 Slack 9 VSCode 10
- Macbook Air Early2015
- mac OS Mojave10.14.3(18D109)
- ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]
com.apple.spaces.plistの構造
仮想デスクトップに関する設定項目は${HOME}/Library/Preferences/com.apple.spaces.plistに記述されていますが、バイナリ形式のため、そのままでは見ることができません。よって、defaultsコマンドを使うか、Xcodeで開くことで見れるようになります。
com.apple.spaces.plist$ defaults read com.apple.spaces SpacesDisplayConfiguration = { "Management Data" = { Age = "43266.030552205"; Double = { CreatedCount = 0; DeletedCount = 0; LifetimeEntryCount = 0; LifetimeMax = 0; LifetimeMin = 0; LifetimeSum = 0; <略> $ open ${HOME}/Library/Preferences/com.apple.spaces.plist //デフォルトだとxcodeで開かれるはずplistは以下のようにツリー構造をしているのがわかります。私の環境では、下記のような構造になっていました。
com.apple.spaces.plistの構造(抜粋)SpacesDisplayConfiguration ├ Space Properties └ 0 └ name => "" └ 1 └ name => "B9A0EA1C-76A0-417D-BD30-4832630F6222" └ 2 └ name => "91D6C0A1-645C-465A-9E5B-713E71FBD5F7" ︙ └ 9 └ name => "B5223836-F5DB-403A-B24C-48491006CFD2" └ app-bindings └ "com.google.chrome" => "B9A0EA1C-76A0-417D-BD30-4832630F6222" └ "com.readdle.smartemail-mac" => "91D6C0A1-645C-465A-9E5B-713E71FBD5F7" ︙ここで、GUI上の仮想デスクトップ番号(1~10)と.plistファイル上の割当番号(0~9)のように1つずれていることに注意してください。
すなわち、
SpacesDisplayConfiguration => Space Properties => 各割当番号 => name
の値でUUIDが決定され、それを
app-bindings => 各アプリケーション => UUID
と記述することで、各アプリケーションを仮想デスクトップに割り当てていることがわかります。
よって、これらの紐付けをCUI上で実施することで、各アプリケーションを仮想デスクトップへの割り当てが自動で行うことができます。com.apple.spaces.plistへ書き込む方法
defaultsコマンドではplistファイルの入れ子になっている要素を操作することができず、難儀しました。(これの調査で1日潰れました。)結論から言うと、/usr/libexec/PlistBuddyコマンドを使うことで、入れ子になった要素を操作することができました。
以下の形式でコマンドを実行します。com.apple.spaces.plistへの要素の追加$ /usr/libexec/PlistBuddy -c "add 名前 値" ${HOME}/Library/Preferences/com.apple.spaces.plist入れ子の区切り文字はコロン(:)です。
例えば、iTerm2(com.googlecode.iterm2)を仮想デスクトップ7番(UUID:8310FB96-4D15-48F4-AD49-4280575AD2A5)に割り当てたい場合は、以下のコマンドを実行します。com.apple.spaces.plistへの要素の追加例$ /usr/libexec/PlistBuddy -c "add :app-bindings:com.googlecode.iterm2 8310FB96-4D15-48F4-AD49-4280575AD2A5" ${HOME}/Library/Preferences/com.apple.spaces.plist仮想デスクトップ画面のUUIDのみ取り出す方法
仮想デスクトップ2番のUUIDを取り出すためには、以下のコマンドを実行します。前述のように、GUI上の仮想デスクトップ2番に対応するplistファイル上の番号は1番であることに注意してください。
$ /usr/libexec/PlistBuddy -c "print :SpacesDisplayConfiguration:Space\ Properties:1:name" ${HOME}/Library/Preferences/com.apple.spaces.plist B9A0EA1C-76A0-417D-BD30-4832630F6222これは、${HOME}/Library/Preferences/com.apple.spaces.plist の SpacesDisplayConfiguration => Space Properties => 1 => nameの値を出力するものです。入れ子の区切り文字はコロン(:)です。また、スペースはエスケープシーケンスで入力してください。
仮想デスクトップ割当の自動化
これらを踏まえると以下のように自動化できます。
SetAppSpace.rbrequire 'open3' NUMBER_OF_VIRTUAL_DESKTOP = 9 uuid=[] #仮想デスクトップのUUID一覧 # アプリケーションと仮想デスクトップ番号の組み合わせ appDomains = [ {"domain"=>"com.google.chrome","num"=>2"uuid"=>nil} {"domain"=>"com.readdle.smartemail-mac","num"=>3"uuid"=>nil} {"domain"=>"com.evernote.evernote","num"=>4"uuid"=>nil} {"domain"=>"com.flexibits.fantastical2.mac","num"=>5"uuid"=>nil} {"domain"=>"com.googlecode.iterm2","num"=>7"uuid"=>nil} {"domain"=>"com.tapbots.tweetbotmac","num"=>9"uuid"=>nil} {"domain"=>"jp.naver.line.mac","num"=>9"uuid"=>nil} {"domain"=>"com.tinyspeck.slackmacgap","num"=>9"uuid"=>nil} {"domain"=>"com.microsoft.vscode","num"=>10"uuid"=>nil} ] # 各仮想デスクトップのUUIDを取得 for spaceNum in 1..(NUMBER_OF_VIRTUAL_DESKTOP + 1) do ## spaceNum-1、NUMBER_OF_VIRTUAL_DESKTOP + 1はGUI上の番号とplistの補正 cmd = %Q(/usr/libexec/PlistBuddy -c "print :SpacesDisplayConfiguration:Space\\ Properties:#{spaceNum-1}:name" ${HOME}/Library/Preferences/com.apple.spaces.plist) uuid[spaceNum], = Open3.capture3(cmd) #1つ目の戻り値のみ格納し、それ以外は捨てる uuid[spaceNum] = uuid[spaceNum].chomp end # 紐付け実行 appDomains.each{|app| app["uuid"] = uuid[app["num"]] cmd = %Q(/usr/libexec/PlistBuddy -c "add :app-bindings:#{app["domain"]} string #{app["uuid"]} " ${HOME}/Library/Preferences/com.apple.spaces.plist) Open3.capture3(cmd) }参考
- 投稿日:2019-02-11T19:26:34+09:00
vagrantでCyberduckに接続
はじめに
Qiitaに記事を書くのは初めてです。vagrantでCyberduckに接続するやり方で詰まったので個人用として書きます。やり方はあっていると思います。
開発環境&前提
- macOS
- CentOS7.6(vagrant+VirtualBox)
- Cyberduckインストール
ターミナルでの作業
まずターミナルを開いて、
$vagrant up
をしてください(サーバー起動)。サーバーが起動したらVagrantfile
のディレクトリに移動して、
$vagrant ssh-config
を実行する。そうすると下記のようにでます。Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/username/vagrant/MyCentOS/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATALこれらの内容は記録しといてください。そうしたらCyberduckに移動してください。
Cyberduckでの作業
Cyberduckに移動したら左上にある新規作成を押します。今回はプロトコルをSFTP (SSHによる暗号化 FTP)にします。
あとはサーバ、ポート、ユーザー名、パスワードをしてすれば接続できます。そこで
$vagrant ssh-config
を実行内容を使います。
- HostName = サーバ(127.0.0.1)
- Port = ポート(2222)
- User = ユーザー名(vagrant)
サーバ、ポート、ユーザー名このようになります。で、パスワードもユーザー名と同じように
- パスワード = vagrant
になるはずです。それで接続できれば大丈夫です。だけど接続できないときもあります。
接続できなければ
接続できなければ
SSH Private Key
でIdentityFile
を指定すれば接続できるはずです。/Users/username/vagrant/MyCentOS/.vagrant/machines/default/virtualbox/private_key途中のファイルから隠しフォルダ内にあるので
Command + Shift + G
でファイルを指定してください。
これで接続できるはずです。
このような画面になれば成功です。まとめ
同じような記事はあると思いますけど初心者がわかるような記事になるように、なりより自分が次にした時にすぐ理解できるように書きました。
参考サイト
- 投稿日:2019-02-11T18:07:34+09:00
Cyberduckからvagrantへの接続方法
初めての記事です。途中で詰まったので自分用に投稿します。
事前にvagrantとcyberduckをインストールしといてください。Cyberduckでの接続方法
まずCyberduckを開いて、左上にある新規作成ボタンを押します。するとこのような画面になります。
まず一番上のプロトコルを選ばなくてはいけません。そこからSFTP (SSHによる暗号化FTP)を指定します。
そこからサーバ、ポート、ユーザー名、パスワードを指定します。ターミナルでの確認方法
ターミナルに移動してVagrantfileが入っているフォルダでvagrant upをします。そこで
vagrant ssh-config
を実行します。すると
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/ユーザー名/vagrant/指定ファイル名/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
このように出ます。これでサーバ、ポート、ユーザー名がわかります。
HostName = サーバ(127.0.0.1)
User = ユーザー名(vagrant)
Port = ポート(2222)
パスワードは大抵ユーザー名と一緒でvagrantで大丈夫でしょう。
ですが失敗するときもあります。私も失敗しました。
接続に失敗したら
接続に失敗したらSSH Private Keyの選択を押して、ファイルを指定します。指定するファイルはIdetityFileです。このファイルの途中でファイルが途切れると思う(見えなくなっている)のですけどCommand + Shift + Gを押してその次のファイルを指定すれば出てくると思うのでそのままprivate_keyを指定してください。そうすれば成功すると思います。
このような画面になれば成功です。参考サイト
- 投稿日:2019-02-11T17:07:12+09:00
Macで始めるPython環境づくり2019 初心者編
はじめに
この記事は最近MacBookProの2018年版TouchBar付きをPayPayで購入した筆者が、
家でPython開発を始めようとしている記事です。
正直初心者なので、深い部分は理解していないものも多いですが、
初心者の方の参考になれば幸いです。仮想環境選び Pyenv+Pipenv
Pyenvは特に要らないとか、venvが公式だからいいとか色々と記事が書かれていますが、まぁ個人的に困らないものを使えばいいと思っているので、今回はPyenv + Pipenvで環境構築を行ってみます。これがベストかは知りませんが、特に問題なく導入できたので僕は良いと思います。
XCodeのインストール
本体は普通にXCodeをAppStoreからインストールします。
そのあとターミナルで下記を実行して、Command Line Toolsをインストールする。$ xcode-select --installHomebrewのインストール
HomebrewはMacでのパッケージ管理ツールみたいなものと理解しています。
pyenvをインストールするためにもまずはインストール。
インストール先にあるコマンドをそのままコピペすればOK。$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"pyenvのインストール
Homebrewさえ入れば、あとはpython系を入れていくだけです。
まずはpyenvを入れます。$ brew install pyenvその後、PATHを通すので、home/.bash_profileに下記を書き込みます。viでの編集に慣れている人は、下記を実行して、.bash_profileに書き込みます。
$ vi ~/.bash_profile
.bash_profileexport PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"慣れていない人は、ファインダーからホームディレクトリの隠しファイルを表示してテキストエディタで.bash_profileの中身を編集しましょう。ちなみに隠しファイルはMacでは下記のショートカットで表示できます。
[command] + [shift] + [.(ドット)]その後設定したファイルを反映させます。
$ source ~/.bash_profile一応、動いているかを確認するため、叩いてみましょう。
下記のようなヘルプ表示が出ればOKです。$ pyenv
pyenv 1.2.9 Usage: pyenv <command> [<args>] Some useful pyenv commands are: commands List all available pyenv commands local Set or show the local application-specific Python version global Set or show the global Python version shell Set or show the shell-specific Python version install Install a Python version using python-build uninstall Uninstall a specific Python version rehash Rehash pyenv shims (run this after installing executables) version Show the current Python version and its origin versions List all Python versions available to pyenv which Display the full path to an executable whence List all Python versions that contain the given executable See `pyenv help <command>' for information on a specific command. For full documentation, see: https://github.com/pyenv/pyenv#readmePipenvのインストール
次にPipenvをインストールします。
brewで一発です。$ brew install pipenvこちらも設定を
.bash_profile
に追記します。
仮想環境をフォルダに作成するフラグを立てておくことがメインです。
ついでにインストールがうまくいっているか叩いてみましょう。.bash_profileexport PIPENV_VENV_IN_PROJECT=true eval "$(pipenv --completion)"$ source ~/.bash_profile $ pipenvUsage: pipenv [OPTIONS] COMMAND [ARGS]... Options: --where Output project home information. --venv Output virtualenv information. --py Output Python interpreter information. --envs Output Environment Variable options. --rm Remove the virtualenv. --bare Minimal output. --completion Output completion (to be eval'd). --man Display manpage. --support Output diagnostic information for use in GitHub issues. --site-packages Enable site-packages for the virtualenv. [env var: PIPENV_SITE_PACKAGES] --python TEXT Specify which version of Python virtualenv should use. --three / --two Use Python 3/2 when creating virtualenv. --clear Clears caches (pipenv, pip, and pip-tools). [env var: PIPENV_CLEAR] -v, --verbose Verbose mode. --pypi-mirror TEXT Specify a PyPI mirror. --version Show the version and exit. -h, --help Show this message and exit. Usage Examples: Create a new project using Python 3.7, specifically: $ pipenv --python 3.7 Remove project virtualenv (inferred from current directory): $ pipenv --rm Install all dependencies for a project (including dev): $ pipenv install --dev Create a lockfile containing pre-releases: $ pipenv lock --pre Show a graph of your installed dependencies: $ pipenv graph Check your installed dependencies for security vulnerabilities: $ pipenv check Install a local setup.py into your virtual environment/Pipfile: $ pipenv install -e . Use a lower-level pip command: $ pipenv run pip freeze Commands: check Checks for security vulnerabilities and against PEP 508 markers provided in Pipfile. clean Uninstalls all packages not specified in Pipfile.lock. graph Displays currently-installed dependency graph information. install Installs provided packages and adds them to Pipfile, or (if no packages are given), installs all packages from Pipfile. lock Generates Pipfile.lock. open View a given module in your editor. run Spawns a command installed into the virtualenv. shell Spawns a shell within the virtualenv. sync Installs all packages specified in Pipfile.lock. uninstall Un-installs a provided package and removes it from Pipfile. update Runs lock, then sync.pyenvとpipenvを利用したpython環境構築
ここまででインストレーションは終わりました。
ここから実際にPythonの環境を作っていきます。
今回は例として、python3.5.6の環境を作ってきます。
pipenvはpyenvの仮想環境をラップするようなイメージで動きますので、まずpython3.5系列をpyenvでインストールしてあげてから、pipenvでディレクトリの環境を整えます。$ pyenv install 3.5.6これでpipenvを使う準備が整いました。プロジェクトディレクトリを作りましょう。
$ mkdir sample_project $ cd sample_project $ pipenv --python 3.5.6これでsample_project内でpython3.5を使って開発をすることができます。
あとは動くかを試してみましょう。pipenvで作った環境をactivateするには、shellというコマンドを実行します。
ぬける際にはexitです。
下記例を見るとわかる通り、pipenvの仮想環境をactivateしている状態では、pythonのバージョンが3.5.6になっており、deactivateした状態では2.7.10となっています。ちなみに作った仮想環境は、sample_project/.venv
に作られていますので、pycharmなどのinterpreterの設定も簡単に行えます。$ pipenv shell $ python --version Python 3.5.6 $ exit $ python --version Python 2.7.10これでpyenvとpipenvを使った簡単なpython環境構築は完了です。
凝ったことはできないので、今後も初心者向けの投稿をしていくつもりです。
- 投稿日:2019-02-11T16:23:00+09:00
[macOS] PyenvでPython使う (VSCode)
mac に乗り換えてデフォルトで python 入ってんだ、へぇと思い、
VSCode 使ってコード書いてみたら、こんな感じで軽く注意されたYou have selected the macOS system install of Python, Which is not recommended for use with the Python extension. Some functionality will be limited, please select a different interpreter.デフォルの python は VSCode 非推奨と言っとる。。
色々ゴニョゴニョやって怒られなくなったのですが、もう一度同じ事ができる気がしなかったのでメモ環境
macOS Mojave 10.14.2
Visual Studio Code 1.30.2
Python 2.7.10の環境に以下を追加する
pyenv 1.2.9 → pythonの複数バージョンを切り替えるため
anaconda3-5.3.1 → 色々入ってて便利なためVSCodeの拡張機能
VSCode の拡張機能から、
python
と入力して入れるpyenv インストール
$ brew install pyenvbrewは 公式を参考に1ライナーでインストール可能
pyenv のインストールが無事終わると、最後の方に忠告がある
==> Caveats To use Homebrew's directories rather than ~/.pyenv add to your profile: export PYENV_ROOT=/usr/local/var/pyenv To enable shims and autocompletion add to your profile: if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi・ デフォルトだと
~/.pyenv
なので、/usr/local/var/pyenv
を指定してね。的な
・ 自動補完機能使うには、eval "$(pyenv init -)"
やってね。的な忠告に従い以下の様に追記
$ vi ~/.bash_profile export PYENV_ROOT=/usr/local/var/pyenv if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi $ . ~/.bash_profile因みにどうでもいいですが、以下を
eval
で評価して実行してた$ pyenv init - export PATH="/usr/local/var/pyenv/shims:${PATH}" export PYENV_SHELL=bash source '/usr/local/Cellar/pyenv/1.2.9/libexec/../completions/pyenv.bash' command pyenv rehash 2>/dev/null pyenv() { local command command="${1:-}" if [ "$#" -gt 0 ]; then shift fi case "$command" in rehash|shell) eval "$(pyenv "sh-$command" "$@")";; *) command pyenv "$command" "$@";; esac }pyenv のインストールが完了
$ type pyenv pyenv is /usr/local/bin/pyenv $ pyenv --version pyenv 1.2.9python3のインストール
インストール可能なリストを表示
$ pyenv install -l | grep anaconda3 anaconda3-2.0.0 anaconda3-2.0.1 anaconda3-2.1.0 anaconda3-2.2.0 anaconda3-2.3.0 anaconda3-2.4.0 anaconda3-2.4.1 anaconda3-2.5.0 anaconda3-4.0.0 anaconda3-4.1.0 anaconda3-4.1.1 anaconda3-4.2.0 anaconda3-4.3.0 anaconda3-4.3.1 anaconda3-4.4.0 anaconda3-5.0.0 anaconda3-5.0.1 anaconda3-5.1.0 anaconda3-5.2.0 anaconda3-5.3.0 anaconda3-5.3.1 anaconda3-2018.12最新を入れる(5分ぐらいかかった気がします)
今回はanaconda入れてますが、普通に2系とか3系とか入れれます$ pyenv install anaconda3-5.3.1 Downloading Anaconda3-5.3.1-MacOSX-x86_64.sh.sh... -> https://repo.continuum.io/archive/Anaconda3-5.3.1-MacOSX-x86_64.sh Installing Anaconda3-5.3.1-MacOSX-x86_64.sh... Installed Anaconda3-5.3.1-MacOSX-x86_64.sh to /usr/local/var/pyenv/versions/anaconda3-5.3.1インストールが終わったら、
pyenv versions
で切り替え可能な python を参照~$ pyenv versions * system (set by /usr/local/var/pyenv/version) anaconda3-5.3.1
pyenv global 'Interpreter'
で切り替える$ pyenv global anaconda3-5.3.1もう一度
pyenv versions
で確認してみると、「*」の場所が変わってる$ pyenv versions system * anaconda3-5.3.1 (set by /Users/ando/.pyenv/version)インタプリタちゃんと変わってた
$ python -V Python 3.7.0 $ type python python is /usr/local/var/pyenv/shims/python因みに、
pyenv local Interpreter
とすると、そのディレクトリのみ切り替わる~$ mkdir py2 ~$ cd py2 ~/py2$ pyenv versions system * anaconda3-5.3.1 (set by /usr/local/var/pyenv/version) ~/py2$ pyenv local system ~/py2$ python -V Python 2.7.10 ~/py2$ cd .. ~$ python -V Python 3.7.0VSCode の Python Interpreter の指定
ようやく本題
Code → 基本設定 → 設定
適当にスクロールしてどこかしらで、settings.json を見つけて編集
をポチ
で以下の様にインストールした python のインタプリタを指定settings.json{ "python.pythonPath": "/usr/local/var/pyenv/versions/anaconda3-5.3.1/bin/python" }
ワークスペースの設定
にも同様に指定
※ここポイント(これやんなくて、あれって30分ぐらいなってた)"settings": { "python.pythonPath": "/usr/local/var/pyenv/versions/anaconda3-5.3.1/bin/python" }これで VSCode で pythonファイル開いても、警告がでなくなりました
因みに VScode でF1押して、検索窓出して、
Python: Select Interpreter
と入力すると、
インタプリタの指定が出来ます。そして、macデフォルトを指定すると当たり前ですがまた警告が出ます。
python2系使う場合、 pyenv で別途インストールが必要です。
- 投稿日:2019-02-11T16:21:01+09:00
Macに乗り換えた時のshell環境のメモ
Macに乗り換えて、シェル環境を色々と触ったので、忘備録として。
(ほとんど100万番煎じですが)サマリー
- zsh インストール
- prezto インストール
- VSCode setting.json修正
- ~/.bashrc ~/.bash_profile → ~/.zshrc へ引っ越し
- gcloud SDK 起動しない。。
- peco を使った便利機能
zsh インストール
- brew で最新の zsh インストール
$ brew install zsh
/usr/local/bin/zsh
にインストールされるので、/etc/shells
にシェルを追記する。$ sudo vim /etc/shells
/usr/local/bin/zsh
を追記する
- 使うシェルを切り替える 以下コマンドでシェルを切り替える
$ chsh -s /usr/local/bin/zshprezto インストール
prezto は zsh を設定するための framework で、こまけぇこたぁいいから、簡単に良い感じでそれっぽくしてくれ。人向き
- git からダウンロード
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
- 既存の
.z~
系のファイルとシンボリックリンクを作る$ setopt EXTENDED_GLOB for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done
- テーマを変える
いい感じなのは、 pure か steeef か sorin だそうです。
ここ にテーマがあります。テーマが決まったら、
.zpreztorc
ファイルに書き込みます。.zpreztorczstyle ':prezto:module:prompt' theme 'sorin'Gitのブランチを表示するには、Preztoのモジュールにgitを追加する。
.zpreztorczstyle ':prezto:load' pmodule \ 'environment' \ 'terminal' \ 'editor' \ 'history' \ 'directory' \ 'spectrum' \ 'utility' \ 'completion' \ 'prompt' \ 'git'こんな感じになる。
VSCode setting.json修正
- VSCodeの起動シェルを変更する。
Code → 基本設定 → 設定 で以下を
/usr/local/bin/zsh
に変更Terminal › Integrated › Shell: Linux
Terminal › Integrated › Shell: Osxsettings.json を直接変更する場合。
settings.json"terminal.integrated.shell.linux": "/usr/local/bin/zsh", "terminal.integrated.shell.osx": "/usr/local/bin/zsh",~/.bashrc ~/.bash_profile → ~/.zshrc へ引っ越し
aliase や環境変数や関数やらなんやら、要るものを持っていきます。
gcloud SDK 起動しない
公式の ここ でインストールし、
bash の時は、~/.bashrcに以下記載がありました。~/.bashrc# The next line updates PATH for the Google Cloud SDK. if [ -f '/Users/andormeda/y/google-cloud-sdk/path.bash.inc' ]; then . '/Users/andormeda/y/google-cloud-sdk/path.bash.inc'; fi # The next line enables shell command completion for gcloud. if [ -f '/Users/andormeda/y/google-cloud-sdk/completion.bash.inc' ]; then . '/Users/andormeda/y/google-cloud-sdk/completion.bash.inc'; fi何て事はなく、bash を zsh に変更すればうまく動きました。
~/.zshrc# The next line updates PATH for the Google Cloud SDK. if [ -f '/Users/andormeda/y/google-cloud-sdk/path.zsh.inc' ]; then . '/Users/andormeda/y/google-cloud-sdk/path.zsh.inc'; fi # The next line enables shell command completion for gcloud. if [ -f '/Users/andormeda/y/google-cloud-sdk/completion.zsh.inc' ]; then . '/Users/andormeda/y/google-cloud-sdk/completion.zsh.inc'; fipeco を使った便利機能
大分有名ですが、history をインクリメンタルサーチするやつです。
- peco のインストール
brew でインストール
brew install peco
~/.zshrcに以下を追記
control + r
にキーバニンドを割り当ててます。~/.zshrc# peco peco-select-history function peco-select-history { BUFFER=`history -n -r 1 | peco --query "$LBUFFER"` CURSOR=$#BUFFER zle reset-prompt } zle -N peco-select-history bindkey '^r' peco-select-historyよく実行するコマンドをテキスト「~/.command」にまとめておいて、同じくインクリメンタルサーチして使えます。
control + t
にキーバニンドを割り当てます。~/.zshrc# peco-snippets function peco-snippets() { BUFFER=$(grep -v "^#" ~/.command | peco --query "$LBUFFER") zle reset-prompt } zle -N peco-snippets bindkey '^t' peco-snippets
- 投稿日:2019-02-11T15:17:00+09:00
[2019年2月版] Juliaが1.1になっていたので触ってみるか
Julia 1.1 リリース
発表された当時はまたいいとこ取りの新しいの出てきたな〜ぐらいにしか思っておらず、すっかり忘れていたわけですが気づけば1.0もリリースされておりまして、さらに先日、1.1がリリースされたとのニュースを目にしたのでおおっと!と思い出したわけでございます。
すぐさま本家サイトに飛んで情報を仕入れてきました。
- 本家サイト: https://julialang.org/
- github: https://github.com/JuliaLang/julia
- ドキュメント: https://docs.julialang.org/en/v1/
さっそく install
対象環境は Mac (macOS High Sierra)です。
以下のサイトからMac用のバイナリをダウンロードしてまいります。例によって
アプリケーション
フォルダにJulia-1-1.app
をドラッグ&ドロップすればインストール完了です。Finderにて
アプリケーション
からJulia-1.1.app
をダブルクリックすればREPL用のターミナルが立ち上がります。$ exec '/Applications/Julia-1.1.app/Contents/Resources/julia/bin/julia' _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.1.0 (2019-01-21) _/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release |__/ | julia>はい、JuliaのREPL環境が起動しました。
Juliaの計算式
Juliaが変態的なのはなんといっても計算式です。それだけじゃないけど言語仕様がてんこ盛りすぎて紹介しきれないのでとりあえず式の書き方からご紹介します。
julia> 1+1 2 julia> x=5 5 julia> 4x 20 julia> y=4 4 julia> xy ERROR: UndefVarError: xy not defined julia> x*y 20数値と変数の乗算で
*
みたいな演算子がいらないってところがミソですね。4x+1
みたいに学校で習った通りに書けます。
流石に変数と変数の暗黙の乗算はダメです。数値リテラルだけに暗黙の乗算メソッドが定義されてる、と頭にいい聞かせて無理やり納得しましょう。さらに特徴的な演算は続きます。
算演算子/
の逆、\
演算子が登場です。julia> 4 / 5 0.8 julia> 4 \ 5 1.25 julia> 5 \ 4 0.8除単純に「右 割る 左」→「左 割る 右」なのですが、確かに算数の割り算
÷
は「左 割る 右」でプログラマーを長く続けてると"右 分の 左"が当たり前じゃん、と思ってしまいますが、初心の頃は「プログラムって"左 割る 右"じゃなくて"右 割る 左"って書かなきゃいけないんだ!」って思ったような思わないような・・・新鮮だったなぁ。。。
(今でもちょっと考えると"4割る5と5分の4て一緒じゃん?なにが違うの?"って思っちゃいますが、ほら!暗黙で左右入れ替えてるでしょ?っていう〜。訓練の賜物なんだけどね。。。)さらに配列のeach展開してくれる
.
演算子。julia> a = [1,2,3] 3-element Array{Int64,1}: 1 2 3 julia> b = [1,0,1] 3-element Array{Int64,1}: 1 0 1 julia> a.*b 3-element Array{Int64,1}: 1 0 3簡単に配列の合成ができてしまいます。。。
あとは超重要なNaNが数値として
==
で比較するのとオブジェクト?として比較するiseqaul
関数で分けられているので安心。julia> NaN == NaN false julia> isequal(NaN, NaN) true julia> isequal(-0.0, 0.0) false
isequal
は値ではなくオブジェクトのハッシュ値を計算して比較するらしいので、-0.0
と0.0.
の区別もします。そして比較演算子の連結。
julia> -0.0 == 0.0 == 0 < 1 true
0 < f(a) < (b) < 1
のような関数の戻り値も当然、連結して比較できます。 これは便利。Macで
option+^
と押すと≠
が出せるんだね!julia> 1≠2 true
はい、
!=
と同じです。続いて
option+v
で√
が出せます。julia> .√b 3-element Array{Float64,1}: 1.0 0.0 1.0配列の各要素の平方根求めてますが・・・だんだん、理解が追いつかなくなってきたな。。。w
というか√配列
だけで呼ぶと以下のエラーが出ます。julia> √b ERROR: MethodError: no method matching sqrt(::Array{Int64,1}) Closest candidates are: sqrt(::Float16) at math.jl:1018 sqrt(::Complex{Float16}) at math.jl:1019 sqrt(::Missing) at math.jl:1070 ... Stacktrace: [1] top-level scope at none:0なるほど
sqrt
関数の引数はやっぱりFlaot16
を受け取るからb
だけだとsqrt(Array)
になっちゃってダメなんですね!で、.
演算子のeach
でb
を展開するからsqrt(Float16)
に渡せる、ということですか。あんまりわかりません!w
(.
が前置でも後置でも動くのが気持ち悪いw)お次はrational number、有理数です。要は分子と分母が整数の分数です。
julia> 2 // 3 2//3 julia> 6//8 3//4 julia> g = 90 90 julia> g//5 18//1
自動で約数にしてくれます。
虚数も余裕です。
julia> 1+2im 1 + 2im julia> 5(1 + 4im) 5 + 20im julia> r=4; i=3; q=r+i*im 4 + 3im julia> real(q) 4 julia> imag(q) 3 julia> conj(q) 4 - 3im julia> abs(q) 5.0 julia> angle(q) 0.6435011087932844 julia> sqrt(-1) ERROR: DomainError with -1.0: sqrt will only return a complex result if called with a complex argument. Try sqrt(Complex(x)). Stacktrace: [1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31 [2] sqrt at ./math.jl:492 [inlined] [3] sqrt(::Int64) at ./math.jl:518 [4] top-level scope at none:0 julia> sqrt(-1 + 0im) 0.0 + 1.0im俺があんまり余裕じゃないけど。。。
sqrt(-1)
でエラーで、sqrt(-1 + 0im)
でちゃんと計算してくれるのはさすがです。配列、行列はプログラマーとしての理解を超えていますw
julia> a = [ 1 -1-im 1+im im] 2×2 Array{Complex{Int64},2}: 1+0im -1-1im 1+1im 0+1im julia> a[1] 1 + 0im julia> a[1:4] 4-element Array{Complex{Int64},1}: 1 + 0im 1 + 1im -1 - 1im 0 + 1im julia> a' 2×2 LinearAlgebra.Adjoint{Complex{Int64},Array{Complex{Int64},2}}: 1+0im 1-1im -1+1im 0-1im julia> b = rand(10,10) 10×10 Array{Float64,2}: 0.276978 0.323021 0.169132 0.195895 … 0.889746 0.926098 0.425271 0.798352 0.240408 0.68136 0.167325 0.442709 0.119885 0.353514 0.806736 0.847521 0.274664 0.927191 0.519732 0.20163 0.843687 0.909628 0.280718 0.262527 0.927031 0.79751 0.852825 0.717645 0.859211 0.167855 0.574454 0.929672 0.745732 0.483358 0.820543 0.808946 0.323306 0.953342 0.987195 … 0.0455295 0.0437875 0.0437014 0.965098 0.219585 0.403237 0.8617 0.966326 0.894821 0.365612 0.310564 0.231156 0.539079 0.289952 0.95213 0.626799 0.412521 0.622888 0.883617 0.219356 0.970493 0.315544 0.913933 0.911824 0.326981 0.645471 0.148864 0.246486 0.278956 0.53009 0.740881要注意なのは配列のインデクスが"1"ベースであるということです。大抵のプログラミング言語は"0"ベースのインデクスですがJuliaは"1"ベースです。
随伴行列ってなんですかね・・・?すいません、実はこっち系全然疎いのですwREPLの終わり方
REPLから抜けるには以下のように
exit
メソッドを呼びます。julia> exit()パスを通す。
アプリケーションフォルダにコピーしただけなので当然このままでは
julia
コマンドが他から呼べません。
パスを通します。$ vi ~/.bash_profile # -> export PATH=/Applications/Julia-1.1.app/Contents/Resources/julia/bin:$PATH を追加。 $ source ~/.bash_profileappのバージョンはダウンロードしたバージョンに合わせてください。
Jupyter で動かしてみる
こちらを参考にしつつ以下の手順で Jupyter 用の Julia kernel
IJulia
をインストールしました。
Anacondaは導入済みとします。julia> using Pkg julia> Pkg.add("IJulia")インストールが終わったら
notebook
メソッドで起動します。julia> using IJulia julia> notebook() install Jupyter via Conda, y/n? [y]: y [ Info: Downloading miniconda installer ... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 43.3M 100 43.3M 0 0 2799k 0 0:00:15 0:00:15 --:--:-- 3538k [ Info: Installing miniconda ...あっ。。。おもわず
y
しちゃったけど、Jupyterはinstallしなくてよかったんじゃないかな〜!?・・・とりあえず起動したのでよしとします。。
jupyterが起動したのを確認したら
control+c
でnotebookのサーバーを停止し、anacondaのnotebookもしくはjupyterlabを起動し、JuliaのアイコンがNotebookとConsoleに追加されているのを確認します。VSCode のプラグイン
VS Codeのプラグインはそのものズバリの
Julia
プラグインがあったのでインストールいたしました。
例によってhello world
を出力してみます。ついでに引数も表示させてみます。sample.jlprintln("hello world") for x in ARGS println(x) endターミナルを開きsample.jlを実行します。
$ julia sample.jl 0 aa bbb ccc hello world 0 aa bbb ccc
素敵!
続きはJupyterでグラフなどを出してみたいと思います。
- 投稿日:2019-02-11T00:52:11+09:00
Google App Script をgitで管理する
claspを導入する
ここの手順でインストール済み。
隠しファイル・隠しフォルダの表示切り替えは[shift + command + .]でできる。Google Apps Script API の有効化
https://script.google.com/home/usersettings
上記にアクセスして、Google Apps Script API をオンにする。
これでアカウントのGASプロジェクトをclaspで操作できるようになる。claspにログイン
clasp loginターミナルで上記を実行すると、ブラウザが立ち上がるのでGoogleアカウントにログインする。
プロジェクトをローカル上にcloneする
ターミナルでクローンするディレクトリに移動して、下記のコマンドを実行する。
clasp clone [スクリプトID]スクリプトIDはファイル→プロジェクトのプロパティで確認できる。
念の為、ターミナルにコマンドを打ち込むときにスクリプトIDに[]は必要ない。gitリポジトリの用意
好きな名前で準備する。
ターミナルからgitへpushする
git config --global user.name xxxxx git config --global user.email xxxxx@example.com git init git add . git commit -m 'First Commit' git remote add origin https://github.com/xxxxx/xxxxx.git git push -u origin master-u オプションをつけることで、以後は
git push
でoriginをmasterにpushできる。コードの変更をGASプロジェクトへ反映する
.clasp.json がある場所で以下を行う。
clasp pushこれでローカルファイルをGASプロジェクトへアップロードしてくれる。
- 投稿日:2019-02-11T00:44:00+09:00
claspの導入(Mac)
claspの導入理由
Google Apps Scriptのソース管理をgitで行いたい。
好きなエディタで開発したい。
以上。Homebrewの導入
公式サイト : https://brew.sh/index_ja
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"上記のコードをターミナルで実行する。
終了したら、無事インストールができたのかバージョンを確認する。git --version余談
私はここでエラーが出てgitをインストールできなかったが、MacのOSをバージョンアップすると上手くいった。node.jsのインストール
Homebrewでnodebrewをインストールする。
brew install nodebrew nodebrew -v nodebrew setup nodebrew install-binary latest余談
nodebrew setup をせずに最新版のnode.jsをインストールしようとしたら失敗したので、setup大事。忘れずに実行する。nodebrew list上記のコマンドでインストール済みバージョンが分かる。
下のcurrentは使用中のバージョン。私の場合はnoneだった。
なので使用するバージョンを指定する。nodebrew use v11.9.0 nodebrew list再び使用可能なバージョンを確認すると、currentが指定したバージョンになっているはず。
次に実行パスを通す。echo "export PATH=\$xxxxx/.nodebrew/current/bin:\$PATH" >> ~/.bashrcxxxxxの部分は人による。
深く考えずにnodebrewのインストール時に表示されたパスを貼り付ければOK。
(下記の表示があったはず)======================================== Export a path to nodebrew: export PATH=$xxxxx/.nodebrew/current/bin:$PATH ========================================.bash_profileで.bashrcの設定が読み込まれるようにする。
そして、.bash_profileの編集はviで行うと思うので以下を参考に。cd ls -a vi ~/.bash_profileホームディレクトリへ移動し、.bash_profileを開く。ない場合は作る。
if [ -f ~/.bashrc ] ; then . ~/.bashrc fiiでINSERTモードに変更し、上記の設定を書き込む。
escキーでコマンドモードに変更。
:wで上書き保存。
:qでvi終了。
設定を反映させるためにターミナルを終了する。node -v npm -vこれでバージョンが表示されればOK!
余談
このあとviコマンドが使えなくなったので、設定を編集しにいきました。/usr/bin/vi ~/.bash_profile.bash_profileに以下を記載
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin再び設定を反映させるためにターミナルを終了。
これでコマンドが使用できるようになったが、今度はnodeのバージョンが表示されず。
以下を実行して、ようやく完了。困っちゃうね。source .bashrcclaspのインストール
npm i @google/clasp -g参考:
claspを使い、Google Apps Scriptプロジェクトをgitでバージョン管理する
GAS のGoogle謹製CLIツール clasp
Google Apps Scriptの新しい3つの機能 その③ CLI Tool Clasp
MacでPATHを通す