リーマンエンジニアの生活日誌

メーカで働くソフトウェアエンジニアのオフ活動

Macにpyenv-virtualenvをセットアップして複数バージョンのPython環境を構築する

ディレクトリ毎に異なるpyenv環境を構築できるので、version依存を気にすることなくpipでパッケージインストールが可能になる
(バージョン依存から解き放たれたい時に使う。)

環境

macOS 10.14.1 Mojave

pyenv-virtualenvインストール

$ brew update
$ brew install pyenv-virtualenv

パッケージインストール完了後、~/.bash_profileに以下を追記

export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
fi

環境変数の変更内容を反映

$ source ~/.bash_profile

使い方

インストール可能なPythonのバージョン確認

$ pyenv install --list

でインストール可能なPythonのバージョン、ディストリビューションが表示される。

Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.4
  ...
  2.7.15
  ...
  3.7.0
  3.7-dev
  3.7.1
  3.7.2
  3.8-dev
  ...

Pythonのインストール方法

例えば、Python 2系の一番新しいやつ(ver.2.7.15)を入れたい場合は

$ pyenv install 2.7.15
  • 以下のエラーが出る場合

      Installing Python-2.7.15...  
      python-build: use readline from homebrew  
      ERROR: The Python zlib extension was not compiled. Missing the zlib?  
    
      Please consult to the Wiki page to fix the problem.  
      https://github.com/pyenv/pyenv/wiki/Common-build-problems  
    

    Xcode cliが入ってなければ、
    $ xcode-select --install
    でインストールを実施。すでに入っている場合は、~/.bash_profileに
    export CFLAGS="-I$(xcrun --show-sdk-path)/usr/include"
    を追加して、source ~/.bash_profileを行い再実行するとインストールできる

インストールされているPythonのバージョン確認

$ pyenv versions
* system (set by /Users/user_name/.pyenv/version)
  2.7.15
  3.7.2

virtualenv仮想環境を作成

pythonのバージョン2.7.15で、testという名称の仮想環境を作成する場合

$ pyenv virtualenv 2.7.15 test

$ pyenv versions
* system (set by /Users/user_name/.pyenv/version)
  2.7.15
  3.7.2
  test

virtualenvの仮想環境を特定のディレクトリ上に構築

環境を作りたいディレクトリを作成し、作成したディレクトリに移動

$ mkdir ~/python/test
$ cd ~/python/test

ディレクトリ内では、先ほど作成したtestという名の仮想環境を使いたい場合

$ pyenv local test

# pythonのバージョンを確認
(test) $ python -V
Python 2.7.15
  • pythonのバージョンが変わらない場合
    ~/.bash_profileにpyenvのPATHを追加
    export PATH="$HOME/.pyenv/shims:$PATH"
    変更内容を適用し、再度バージョン確認を試みる
    source ~/.bash_profile

参考URL

codelab.website

ensekitt.hatenablog.com

gappy.hateblo.jp

qiita.com

DockerのGUIアプリをMac OS上で表示する

環境

ホスト: Mac OS Mojave 10.14.1
コンテナ: Ubuntu 18.04

X11のインストール

ホスト(MAC)で下記の要領でインストールを実行

brew cask install xquartz
# XQuartzの立ち上げ
xquartz

XQuartzのアプリの環境設定を開き、「セキュリティ」タブの

  • 「接続を認証」をOFF
  • 「ネットワーク・クライアントからの接続を許可」をON

を設定する。接続後、XQuartzを再起動

Dockerコンテナ内での設定

apt-get update
apt-get install -y libx11-dev
export DISPLAY=host.docker.internal:0.0

のコマンドを実行した後に、コンテナ内のGUIアプリを実行するとXQuartz上でアプリを触ることができます。
host.docker.internalはdockerコンテナの内部IPアドレスとホストをつなぐために用いられるもので、dockerのversion 18.03以降で使えるらしいです。

使ってみた感想

Visual Studio Codeをコンテナ内にインストールして試してみました。
アプリが転送できるのは嬉しいのですが、同一マシンにあるにも関わらず動きがもっさりしているので個人的には微妙な感じです。
コンテナ内で開発するならUbuntuホストで実行した方が圧倒的に快適な印象。
個人で開発するなら、ホスト内で最新バージョンに合わせつつ環境をアップデートしていった方が負担は少ないかなと思いました。

参考

qiita.com

docs.docker.com

MacBook Proセットアップ手順メモ

ブログ開始に合わせて、自分のポートフォリオ的なものぐらい作ってかないとヤバいということで2018年モデルのMac Book Proを先日購入しました。

今までWindows、もしくはUbuntuマシンしか使ってなかったのですが、MacBookを使ってみたいということで初めてのMacOS PCになります。
Dockerを使ってROSのプログラミング環境をゼロから構築した手順を以下メモ↓

Touchpadの設定

タップでクリックできるように設定

enjoy.sso.biglobe.ne.jp

日本語変換の候補表示フォントを変更

明朝体がデフォルトになっていて見辛い、堅苦しいので下記のURLを参考にフォントを変更

wayohoo.com

Google Chromeのインストール

Googleのサイトからインストーラをダウンロードしてインストール

support.google.com

ターミナルのスタイル変更

Finder → Application -> utility -> terminalで開く ターミナルのメニューバーから環境設定を選択し、プロファイルタブからお気に入りのプロファイルを選択。デフォルトボタンを押して再起動すると設定したスタイルでターミナルが開くようになる

Homebrewインストール

ターミナル上で下記コマンドを実行すると、Xcodeをインストールしますかのダイアログが出てくるので、インストールボタンをクリック

# Xcode command line tool のインストール
$ xcode-select --install

Xcodeのセットアップ終了後、

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

を実行するとHomebrewがインストールされる。ディレクトリアクセス権限認証のために、ユーザパスワードを聞かれるのでパスワード入力してインストールを実行

Docker for Mac インストール

hub.docker.com

初めまして

初めまして。mkawabe7と申します。
とあるメーカでソフトウェアエンジニアをやっております。 30歳を過ぎて何もアウトプットせずに来てしまって危機感を感じてブログをはじめた次第です。

個人情報は
LinkedIn:
  https://www.linkedin.com/in/mitsuhisa-kawabe-40a956146/
Github:
  GitHub - mkawabe7/redume: 履歴、職務経歴まとめ
にまとめておりますので、こちらを参照願います。

新規事業的な感じで新しいロボットを作っていて、ロボット制御ソフトウェア開発を普段やっております。
普段やってる関連技術の深掘りか、プライベートは別な技術開発をするかは微妙なのですが、
オフに作ったもの、勉強したことをどんどんアウトプットしていければと思います。

よろしくお願いいたします。