MENU

溶けかけてるうさぎ HP BLOG TOP RECENT ARTICLES POPULAR ARTICLES ABOUT THIS BLOG

CATEGORY

大学 (85) 航空宇宙 (55) 写真 (25) 旅行 (14) 飯・酒 (11) コンピュータ (88) その他 (13)

TAG

ARCHIVE

2018 (92) 2017 (80) 2016 (0)

RECENT

【駅メモ】4年目に突入して,ようやく3000駅突破 【WebRTC】Raspberry Pi搭載ロボットをWebRTCで遠隔操作しようとして失敗した 【航空宇宙】航空宇宙アドベントカレンダー 始まります! 【Perl】YAPC::Tokyo 2019 のチケットを確保しました! 【カメラ】Canonから富士フイルムに乗り換えました

【Anaconda】WindowsでのPython 2.7系/3.x系共存環境構築

2017-09-17

新しいWindows PCを購入したので,Python環境を一から構築しなおした.

過去の自作ツールが2.7系で書かれているため,2.7系ベースで3.x系も使える環境を構築する.

 

と言いつつ,Pythonは好きではないので,最近は新規でコードを書くとこはない.

対話モードで起動すれば,高機能電卓として使え便利だが,そのようなものはirb (Interactive Ruby) を使えばPythonを使う必要もない.

大学の学科内共通言語がPythonなのが,本当に理解できない.

1.動作環境

Microsoft Windows 10 Home (64bit)

2.Anaconda 2.7のインストール

https://www.anaconda.com/download/よりAnaconda 4.4.0 For Windows Installer (Python 2.7 version) をダウンロードする.
デフォルト設定のままでインストールする.すると,C:\ProgramData\Anaconda2にインストールされる.(変なとこに入れるなぁ,という印象.)

3.PATHを通す

コマンドプロンプトからpythonpipと入力しても実行できない.

どうやらインストール時に,“Anacondaのパスを通す(英語)”のチェックをつけていなかったのがいけないようだ.説明文には非推奨とあった気がする.

なお,“AnacondaをデフォルトのPythonにする(英語)”みたいなのはチェックに入っていた.

仕方がないので,旧PCでパスが通っていた

C:\ProgramData\Anaconda2
C:\ProgramData\Anaconda2\Scripts
C:\ProgramData\Anaconda2\Library\bin

にパスを通す.

 

システム環境変数に,変数ANACONDA_PATHを新規作成,その変数値をC:\ProgramData\Anaconda2;C:\ProgramData\Anaconda2\Scripts;C:\ProgramData\Anaconda2\Library\bin;とし,%ANACONDA_PATH%をシステム環境PATHへ登録した.

 

4.3.x系の環境構築

3.x系の仮想環境を構築する.

コマンドプロンプトで,

> conda create -n py36 python=3.6 anaconda

と実行すると,C:\Users\${username}\AppData\Local\conda\conda\envs\py36に環境ができてしまった.

特定ユーザではなく,全ユーザに構築したかったので,とりあえず

> conda remove -n py36 --all

で環境の削除.

さらに,(正しい操作か不明だが)C:\Users\${username}\AppData\Local\conda以下のディレクトリを削除.

 

コマンドプロンプトを管理者権限で立ち上げて,

> conda create -n py36 python=3.6 anaconda

と実行すると,C:\ProgramData\Anaconda2\envs\py36に環境ができた.

以下,環境構築のコマンドログである.

> conda create -n py36 python=3.6 anaconda
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment C:\ProgramData\Anaconda2\envs\py36:

The following NEW packages will be INSTALLED:

    _license:            1.1-py36_1
    alabaster:           0.7.10-py36_0
    anaconda:            4.4.0-np112py36_0
    anaconda-client:     1.6.3-py36_0
    anaconda-navigator:  1.6.2-py36_0
    anaconda-project:    0.6.0-py36_0
    asn1crypto:          0.22.0-py36_0
    astroid:             1.4.9-py36_0
    astropy:             1.3.2-np112py36_0
    babel:               2.4.0-py36_0
    backports:           1.0-py36_0
    beautifulsoup4:      4.6.0-py36_0
    bitarray:            0.8.1-py36_1
    blaze:               0.10.1-py36_0
    bleach:              1.5.0-py36_0
    bokeh:               0.12.5-py36_1
    boto:                2.46.1-py36_0
    bottleneck:          1.2.1-np112py36_0
    bzip2:               1.0.6-vc14_3       [vc14]
    cffi:                1.10.0-py36_0
    chardet:             3.0.3-py36_0
    click:               6.7-py36_0
    cloudpickle:         0.2.2-py36_0
    clyent:              1.2.2-py36_0
    colorama:            0.3.9-py36_0
    comtypes:            1.1.2-py36_0
    console_shortcut:    0.1.1-py36_1
    contextlib2:         0.5.5-py36_0
    cryptography:        1.8.1-py36_0
    curl:                7.52.1-vc14_0      [vc14]
    cycler:              0.10.0-py36_0
    cython:              0.25.2-py36_0
    cytoolz:             0.8.2-py36_0
    dask:                0.14.3-py36_1
    datashape:           0.5.4-py36_0
    decorator:           4.0.11-py36_0
    distributed:         1.16.3-py36_0
    docutils:            0.13.1-py36_0
    entrypoints:         0.2.2-py36_1
    et_xmlfile:          1.0.1-py36_0
    fastcache:           1.0.2-py36_1
    flask:               0.12.2-py36_0
    flask-cors:          3.0.2-py36_0
    freetype:            2.5.5-vc14_2       [vc14]
    get_terminal_size:   1.0.0-py36_0
    gevent:              1.2.1-py36_0
    greenlet:            0.4.12-py36_0
    h5py:                2.7.0-np112py36_0
    hdf5:                1.8.15.1-vc14_4    [vc14]
    heapdict:            1.0.0-py36_1
    html5lib:            0.999-py36_0
    icu:                 57.1-vc14_0        [vc14]
    idna:                2.5-py36_0
    imagesize:           0.7.1-py36_0
    ipykernel:           4.6.1-py36_0
    ipython:             5.3.0-py36_0
    ipython_genutils:    0.2.0-py36_0
    ipywidgets:          6.0.0-py36_0
    isort:               4.2.5-py36_0
    itsdangerous:        0.24-py36_0
    jdcal:               1.3-py36_0
    jedi:                0.10.2-py36_2
    jinja2:              2.9.6-py36_0
    jpeg:                9b-vc14_0          [vc14]
    jsonschema:          2.6.0-py36_0
    jupyter:             1.0.0-py36_3
    jupyter_client:      5.0.1-py36_0
    jupyter_console:     5.1.0-py36_0
    jupyter_core:        4.3.0-py36_0
    lazy-object-proxy:   1.2.2-py36_0
    libpng:              1.6.27-vc14_0      [vc14]
    libtiff:             4.0.6-vc14_3       [vc14]
    llvmlite:            0.18.0-py36_0
    locket:              0.2.0-py36_1
    lxml:                3.7.3-py36_0
    markupsafe:          0.23-py36_2
    matplotlib:          2.0.2-np112py36_0
    menuinst:            1.4.7-py36_0
    mistune:             0.7.4-py36_0
    mkl:                 2017.0.1-0
    mkl-service:         1.1.2-py36_3
    mpmath:              0.19-py36_1
    msgpack-python:      0.4.8-py36_0
    multipledispatch:    0.4.9-py36_0
    navigator-updater:   0.1.0-py36_0
    nbconvert:           5.1.1-py36_0
    nbformat:            4.3.0-py36_0
    networkx:            1.11-py36_0
    nltk:                3.2.3-py36_0
    nose:                1.3.7-py36_1
    notebook:            5.0.0-py36_0
    numba:               0.33.0-np112py36_0
    numexpr:             2.6.2-np112py36_0
    numpy:               1.12.1-py36_0
    numpydoc:            0.6.0-py36_0
    odo:                 0.5.0-py36_1
    olefile:             0.44-py36_0
    openpyxl:            2.4.7-py36_0
    openssl:             1.0.2l-vc14_0      [vc14]
    packaging:           16.8-py36_0
    pandas:              0.20.1-np112py36_0
    pandocfilters:       1.4.1-py36_0
    partd:               0.3.8-py36_0
    path.py:             10.3.1-py36_0
    pathlib2:            2.2.1-py36_0
    patsy:               0.4.1-py36_0
    pep8:                1.7.0-py36_0
    pickleshare:         0.7.4-py36_0
    pillow:              4.1.1-py36_0
    pip:                 9.0.1-py36_1
    ply:                 3.10-py36_0
    prompt_toolkit:      1.0.14-py36_0
    psutil:              5.2.2-py36_0
    py:                  1.4.33-py36_0
    pycosat:             0.6.2-py36_0
    pycparser:           2.17-py36_0
    pycrypto:            2.6.1-py36_6
    pycurl:              7.43.0-py36_2
    pyflakes:            1.5.0-py36_0
    pygments:            2.2.0-py36_0
    pylint:              1.6.4-py36_1
    pyodbc:              4.0.16-py36_0
    pyopenssl:           17.0.0-py36_0
    pyparsing:           2.1.4-py36_0
    pyqt:                5.6.0-py36_2
    pytables:            3.2.2-np112py36_4
    pytest:              3.0.7-py36_0
    python:              3.6.1-2
    python-dateutil:     2.6.0-py36_0
    pytz:                2017.2-py36_0
    pywavelets:          0.5.2-np112py36_0
    pywin32:             220-py36_2
    pyyaml:              3.12-py36_0
    pyzmq:               16.0.2-py36_0
    qt:                  5.6.2-vc14_4       [vc14]
    qtawesome:           0.4.4-py36_0
    qtconsole:           4.3.0-py36_0
    qtpy:                1.2.1-py36_0
    requests:            2.14.2-py36_0
    rope:                0.9.4-py36_1
    ruamel_yaml:         0.11.14-py36_1
    scikit-image:        0.13.0-np112py36_0
    scikit-learn:        0.18.1-np112py36_1
    scipy:               0.19.0-np112py36_0
    seaborn:             0.7.1-py36_0
    setuptools:          27.2.0-py36_1
    simplegeneric:       0.8.1-py36_1
    singledispatch:      3.4.0.3-py36_0
    sip:                 4.18-py36_0
    six:                 1.10.0-py36_0
    snowballstemmer:     1.2.1-py36_0
    sortedcollections:   0.5.3-py36_0
    sortedcontainers:    1.5.7-py36_0
    sphinx:              1.5.6-py36_0
    spyder:              3.1.4-py36_0
    sqlalchemy:          1.1.9-py36_0
    statsmodels:         0.8.0-np112py36_0
    sympy:               1.0-py36_0
    tblib:               1.3.2-py36_0
    testpath:            0.3-py36_0
    tk:                  8.5.18-vc14_0      [vc14]
    toolz:               0.8.2-py36_0
    tornado:             4.5.1-py36_0
    traitlets:           4.3.2-py36_0
    unicodecsv:          0.14.1-py36_0
    vs2015_runtime:      14.0.25123-0
    wcwidth:             0.1.7-py36_0
    werkzeug:            0.12.2-py36_0
    wheel:               0.29.0-py36_0
    widgetsnbextension:  2.0.0-py36_0
    win_unicode_console: 0.5-py36_0
    wrapt:               1.10.10-py36_0
    xlrd:                1.0.0-py36_0
    xlsxwriter:          0.9.6-py36_0
    xlwings:             0.10.4-py36_0
    xlwt:                1.2.0-py36_0
    zict:                0.1.2-py36_0
    zlib:                1.2.8-vc14_3       [vc14]

Proceed ([y]/n)? y

...

以下,パッケージのダウンロード画面

...

INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\ProgramData\Anaconda2\envs\py36', env_name: 'py36', mode: 'None', used_mode: 'system'
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\ProgramData\Anaconda2\envs\py36', env_name: 'py36', mode: 'None', used_mode: 'system'
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\ProgramData\Anaconda2\envs\py36', env_name: 'py36', mode: 'None', used_mode: 'system'
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\ProgramData\Anaconda2\envs\py36', env_name: 'py36', mode: 'None', used_mode: 'system'
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\ProgramData\Anaconda2\envs\py36', env_name: 'py36', mode: 'None', used_mode: 'system'
INFO menuinst_win32:__init__(182): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\ProgramData\Anaconda2\envs\py36', env_name: 'py36', mode: 'None', used_mode: 'system'
#
# To activate this environment, use:
# > activate py36
#
# To deactivate this environment, use:
# > deactivate py36
#
# * for power-users using bash, you must source
#

5.仮想環境の切り替えなどのコマンドまとめ

rem 環境の一覧
conda info -e

rem 環境の切り替え
activate py36

rem 環境の切り替えを戻す
deactivate

6.気づき

> path
PATH=...${略}...C:\ProgramData\Anaconda2;C:\ProgramData\Anaconda2\Scripts;C:\ProgramData\Anaconda2\Library\bin;...${略}...

> where python
C:\ProgramData\Anaconda2\python.exe

> where pip
C:\ProgramData\Anaconda2\Scripts\pip.exe

> activate py36

(py36) > where python
C:\ProgramData\Anaconda2\envs\py36\python.exe
C:\ProgramData\Anaconda2\python.exe

(py36)  > where pip
C:\ProgramData\Anaconda2\envs\py36\Scripts\pip.exe
C:\ProgramData\Anaconda2\Scripts\pip.exe

(py36)  > path
PATH=C:\ProgramData\Anaconda2\envs\py36;C:\ProgramData\Anaconda2\envs\py36\Library\mingw-w64\bin;C:\ProgramData\Anaconda2\envs\py36\Library\usr\bin;C:\ProgramData\Anaconda2\envs\py36\Library\bin;C:\ProgramData\Anaconda2\envs\py36\Scripts;...${略}...C:\ProgramData\Anaconda2;C:\ProgramData\Anaconda2\Scripts;C:\ProgramData\Anaconda2\Library\bin;...${略}...

上のようにコマンドを叩いたのだが,環境の切り替え時に環境PATHの上位に仮想環境のPATHを登録しているように見える.

root環境のPATHが消えていないのが気になるところ.

PATHへの登録時に,直接ではなく環境変数を介したことが影響しているとかあるのかな?

7.関連記事

8.参考・出典サイト

Qiita. データサイエンティストを目指す人のpython環境構築 2016. Retrieved September 17, 2017, from http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c
PENGUINITIS. Anaconda における Python 2 と Python 3 の共存. Retrieved September 17, 2017, from http://www.geocities.jp/penguinitis2002/computer/programming/Python/Anaconda_Python2_3.html

コメントを投稿

名前

Email (※公開されることはありません)

コメント