How I successfully installed Tensorflow

Like many other people, I had difficulty installing tensorflow. Some supposedly contributing factors include my computer's operating system being both Windows 10 and upgraded from Windows 8, along with having both the latest version of Python installed (3.5.4) along side a separate installation of Anaconda3.

I followed the official tutorials on the Tensorflow website, and it did not work. In the testing step, I got an error, the module for tensorflow could not be found.

Long story short, instead of using:

```
**pip install --ignore-installed --upgrade tensorflow**

```

I used:

```
**C:\Anaconda3\envs\TFenv1\Scripts\pip install --ignore-installed --upgrade tensorflow**

```

That is, I just replaced "pip" with the file location of this particular pip I needed to use. The one that was in my virtual environment (which is called "TFenv1", for tensorflow environment 1). I got that tip here.

Now, to explain in detail...

## Tutorials result in an Error

So, since I previously had lots of difficulty before trying to install and use this and other things (like django, and virtualenv which ironically was itself supposed to fix the problems, both of which installed but failed to work properly), I really wanted to follow the official tutorials and make sure I was doing everything right.

Also I learned that Anaconda is good for easily handling a lot of dependencies and such. Previously I just used Python and pip on its own.

### Starting with the Anaconda Tutorial

So I got Anaconda and did the getting started tutorial before going anywhere near tensorflow. I wanted to take this one step at a time, make sure everything worked correctly.

Oh ya, first I learned that windows "powershell" does not activate virtual environments when you tell it to (among other difficulties), so I used the Anaconda Prompt, which I learned had no such issues.  Once I did that, the Anaconda getting started tutorial went without any difficulty.

```
(C:\Anaconda3) C:\Users\Brian>cd C:\Anaconda3

(C:\Anaconda3) C:\Anaconda3>cd C:\Anaconda3\Scripts

(C:\Anaconda3) C:\Anaconda3\Scripts>conda info --envs

# conda environments:

#

bunnies                  C:\Anaconda3\envs\bunnies

myEnvironment1           C:\Anaconda3\envs\myEnvironment1

root                  *  C:\Anaconda3

(C:\Anaconda3) C:\Anaconda3\Scripts>activate bunnies

(bunnies) C:\Anaconda3\Scripts>conda info --envs

# conda environments:

#

bunnies               *  C:\Anaconda3\envs\bunnies

myEnvironment1           C:\Anaconda3\envs\myEnvironment1

root                     C:\Anaconda3

(bunnies) C:\Anaconda3\Scripts>deactivate

C:\Anaconda3\Scripts>conda info --envs

# conda environments:

#

bunnies                  C:\Anaconda3\envs\bunnies

myEnvironment1           C:\Anaconda3\envs\myEnvironment1

root                  *  C:\Anaconda3

```

So, I could now activate a virtual environment!

### On to the Tensorflow Tutorial

So, I went on to the Tensorflow official tutorial for installing on Windows with Anaconda.

```
C:\Anaconda3\Scripts>conda create -n TFenv1 python=3.5

Fetching package metadata .............

Solving package specifications: .

Package plan for installation in environment C:\Anaconda3\envs\TFenv1:

The following NEW packages will be INSTALLED:

    certifi:        2017.11.5-py35h456c6ae_0

    pip:            9.0.1-py35h691316f_4

    python:         3.5.4-h1357f44_23

    setuptools:     36.5.0-py35h21a22e4_0

    vc:             14-h2379b0c_2

    vs2015_runtime: 14.0.25123-hd4c4e62_2

    wheel:          0.30.0-py35h38a90bc_1

    wincertstore:   0.2-py35hfebbdb8_0

Proceed ([y]/n)? y

#

# > activate TFenv1

#

# > deactivate

#

# * for power-users using bash, you must source

#

C:\Anaconda3\Scripts>activate TFenv1

(TFenv1) C:\Anaconda3\Scripts>pip install --ignore-installed --upgrade tensorflow

Collecting tensorflow

  Downloading tensorflow-1.4.0-cp36-cp36m-win_amd64.whl (28.3MB)

    100% |████████████████████████████████| 28.3MB 59kB/s

Collecting six>=1.10.0 (from tensorflow)

  Using cached six-1.11.0-py2.py3-none-any.whl

Collecting wheel>=0.26 (from tensorflow)

  Using cached wheel-0.30.0-py2.py3-none-any.whl

Collecting enum34>=1.1.6 (from tensorflow)

  Downloading enum34-1.1.6-py3-none-any.whl

Collecting protobuf>=3.3.0 (from tensorflow)

  Downloading protobuf-3.5.0.post1-py2.py3-none-any.whl (389kB)

    100% |████████████████████████████████| 389kB 2.2MB/s

Collecting tensorflow-tensorboard<0.5.0,>=0.4.0rc1 (from tensorflow)

  Downloading tensorflow_tensorboard-0.4.0rc3-py3-none-any.whl (1.7MB)

    100% |████████████████████████████████| 1.7MB 1.7MB/s

Collecting numpy>=1.12.1 (from tensorflow)

  Downloading numpy-1.13.3-cp36-none-win_amd64.whl (13.1MB)

    100% |████████████████████████████████| 13.1MB 433kB/s

Collecting setuptools (from protobuf>=3.3.0->tensorflow)

  Downloading setuptools-37.0.0-py2.py3-none-any.whl (481kB)

    100% |████████████████████████████████| 491kB 1.2MB/s

Collecting html5lib==0.9999999 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)

  Downloading html5lib-0.9999999.tar.gz (889kB)

    100% |████████████████████████████████| 890kB 1.9MB/s

Collecting markdown>=2.6.8 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)

  Downloading Markdown-2.6.9.tar.gz (271kB)

    100% |████████████████████████████████| 276kB 688kB/s

Collecting bleach==1.5.0 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)

  Downloading bleach-1.5.0-py2.py3-none-any.whl

Collecting werkzeug>=0.11.10 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)

  Downloading Werkzeug-0.12.2-py2.py3-none-any.whl (312kB)

    100% |████████████████████████████████| 317kB 1.5MB/s

Building wheels for collected packages: html5lib, markdown

  Running setup.py bdist_wheel for html5lib ... done

  Stored in directory: C:\Users\Brian\AppData\Local\pip\Cache\wheels\6f\85\6c\56b8e1292c6214c4eb73b9dda50f53e8e977bf65989373c962

  Running setup.py bdist_wheel for markdown ... done

  Stored in directory: C:\Users\Brian\AppData\Local\pip\Cache\wheels\bf\46\10\c93e17ae86ae3b3a919c7b39dad3b5ccf09aeb066419e5c1e5

Successfully built html5lib markdown

Installing collected packages: six, wheel, enum34, setuptools, protobuf, numpy, html5lib, markdown, bleach, werkzeug, tensorflow-tensorboard, tensorflow

Successfully installed bleach-2.0.0 enum34-1.1.6 html5lib-0.999999999 markdown-2.6.9 numpy-1.13.3 protobuf-3.5.0.post1 setuptools-37.0.0 six-1.11.0 tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc3 werkzeug-0.12.2 wheel-0.30.0

(TFenv1) C:\Anaconda3\Scripts>$ python

'$' is not recognized as an internal or external command,

operable program or batch file.

(TFenv1) C:\Anaconda3\Scripts>python

Python 3.5.4 |Anaconda, Inc.| (default, Nov  8 2017, 14:34:30) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ImportError: No module named 'tensorflow'

```

So, there's the error.  No module named tensorflow.

## Trying to solve the Error

I went to google and found many people having this same error.  All kinds of fixes were proposed.  I didn't know which to try. (I did try "python3" instead of "python", which worked for some people, but just gave me an error, "not a recognizeable command operable program or batch file")

### Didn't it install successfully?

I found I could check what was in my virtual environment, wasn't tensorflow installed successfully?  Here's what I found:

```
(TFenv1) C:\Anaconda3\Scripts>conda list
# packages in environment at C:\Anaconda3\envs\TFenv1:
#
certifi                   2017.11.5        py35h456c6ae_0
pip                       9.0.1            py35h691316f_4
python                    3.5.4               h1357f44_23
setuptools                36.5.0           py35h21a22e4_0
vc                        14                   h2379b0c_2
vs2015_runtime            14.0.25123           hd4c4e62_2
wheel                     0.30.0           py35h38a90bc_1
wincertstore              0.2              py35hfebbdb8_0

```

So hmm, it wasn't there.  That's basically the list of stuff inside the folder dedicated to this virtual environment, but it isn't showing up.

What I did next was open the folder that my Anaconda3 is installed in, and simply searched for "tensorflow".  I found the files that were installed.  Every one of them was in C:\Anaconda3\Lib\site-packages.

They weren't in the folder of my virtual environment.

### Not installed in the right place, so how to fix that?

I actually tried just copying and pasting one of those tensorflow folders into the correct folder in my virtual environment folder.  Then I tested to see if this worked:

```
(TFenv1) C:\Anaconda3\Scripts>conda list
# packages in environment at C:\Anaconda3\envs\TFenv1:
#
certifi                   2017.11.5        py35h456c6ae_0
pip                       9.0.1            py35h691316f_4
python                    3.5.4               h1357f44_23
setuptools                36.5.0           py35h21a22e4_0
vc                        14                   h2379b0c_2
vs2015_runtime            14.0.25123           hd4c4e62_2
wheel                     0.30.0           py35h38a90bc_1
wincertstore              0.2              py35hfebbdb8_

```

So, it didn't show up when I tried this again, but what the heck, I decided to check if the error still happened or what:

```
(TFenv1) C:\Anaconda3\Scripts>python
Python 3.5.4 |Anaconda, Inc.| (default, Nov  8 2017, 14:34:30) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Anaconda3\envs\TFenv1\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
    from tensorflow.python import *
  File "C:\Anaconda3\envs\TFenv1\lib\site-packages\tensorflow\python\__init__.py", line 47, in <module>
    import numpy as np
ImportError: No module named 'numpy'

```

Well isn't that interesting?  The "no module named 'tensoflow'" error was gone!  That means it now saw a module named tensorflow, the one I pasted into the folder.

Of course, now it couldn't find the next thing it needed, numpy, which I hadn't pasted in.

So I had learned from this experiment where the module needed to be (I kinda knew that before, but was even more sure now).

Then I found a response online that said how to correctly use the pip inside the virtual environment to install stuff inside of the virtual environment(I had to quickly rename that pasted tensorflow folder so that it wouldn't interfere with this new installation, then I deleted it):

```
(TFenv1) C:\Anaconda3\Scripts>C:\Anaconda3\envs\TFenv1\Scripts\pip install --ignore-installed --upgrade tensorflow
Collecting tensorflow
  Downloading tensorflow-1.4.0-cp35-cp35m-win_amd64.whl (28.3MB)
    100% |################################| 28.3MB 29kB/s
Collecting protobuf>=3.3.0 (from tensorflow)
  Using cached protobuf-3.5.0.post1-py2.py3-none-any.whl
Collecting enum34>=1.1.6 (from tensorflow)
  Using cached enum34-1.1.6-py3-none-any.whl
Collecting six>=1.10.0 (from tensorflow)
  Using cached six-1.11.0-py2.py3-none-any.whl
Collecting tensorflow-tensorboard<0.5.0,>=0.4.0rc1 (from tensorflow)
  Using cached tensorflow_tensorboard-0.4.0rc3-py3-none-any.whl
Collecting wheel>=0.26 (from tensorflow)
  Using cached wheel-0.30.0-py2.py3-none-any.whl
Collecting numpy>=1.12.1 (from tensorflow)
  Downloading numpy-1.13.3-cp35-none-win_amd64.whl (13.1MB)
    100% |################################| 13.1MB 107kB/s
Collecting setuptools (from protobuf>=3.3.0->tensorflow)
  Using cached setuptools-37.0.0-py2.py3-none-any.whl
Collecting markdown>=2.6.8 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
  Using cached Markdown-2.6.9.tar.gz
Collecting werkzeug>=0.11.10 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
  Using cached Werkzeug-0.12.2-py2.py3-none-any.whl
Collecting bleach==1.5.0 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
  Using cached bleach-1.5.0-py2.py3-none-any.whl
Collecting html5lib==0.9999999 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
  Using cached html5lib-0.9999999.tar.gz
Building wheels for collected packages: markdown, html5lib
  Running setup.py bdist_wheel for markdown ... done
  Stored in directory: C:\Users\Brian\AppData\Local\pip\Cache\wheels\bf\46\10\c93e17ae86ae3b3a919c7b39dad3b5ccf09aeb066419e5c1e5
  Running setup.py bdist_wheel for html5lib ... done
  Stored in directory: C:\Users\Brian\AppData\Local\pip\Cache\wheels\6f\85\6c\56b8e1292c6214c4eb73b9dda50f53e8e977bf65989373c962
Successfully built markdown html5lib
Installing collected packages: six, setuptools, protobuf, enum34, markdown, werkzeug, html5lib, bleach, wheel, numpy, tensorflow-tensorboard, tensorflow
Successfully installed bleach-1.5.0 enum34-1.1.6 html5lib-0.9999999 markdown-2.6.9 numpy-1.13.3 protobuf-3.5.0.post1 setuptools-37.0.0 six-1.11.0 tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc3 werkzeug-0.12.2 wheel-0.30.0

(TFenv1) C:\Anaconda3\Scripts>conda list
# packages in environment at C:\Anaconda3\envs\TFenv1:
#
bleach                    1.5.0                     <pip>
certifi                   2017.11.5        py35h456c6ae_0
enum34                    1.1.6                     <pip>
html5lib                  0.9999999                 <pip>
Markdown                  2.6.9                     <pip>
numpy                     1.13.3                    <pip>
pip                       9.0.1            py35h691316f_4
protobuf                  3.5.0.post1               <pip>
python                    3.5.4               h1357f44_23
setuptools                36.5.0           py35h21a22e4_0
setuptools                37.0.0                    <pip>
six                       1.11.0                    <pip>
tensorflow                1.4.0                     <pip>
tensorflow-tensorboard    0.4.0rc3                  <pip>
vc                        14                   h2379b0c_2
vs2015_runtime            14.0.25123           hd4c4e62_2
Werkzeug                  0.12.2                    <pip>
wheel                     0.30.0                    <pip>
wheel                     0.30.0           py35h38a90bc_1
wincertstore              0.2              py35hfebbdb8_0

(TFenv1) C:\Anaconda3\Scripts>python
Python 3.5.4 |Anaconda, Inc.| (default, Nov  8 2017, 14:34:30) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('hello tensorFLOW!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
b'hello tensorFLOW!'
>>> print('why is there a b?')
why is there a b?
>>> print(sess.run(hello))
b'hello tensorFLOW!'
>>>

```

It works!

As for that curious "b" at the end, it looks like that's fine and not an issue at all.