title: Managing packages: PyCharm vs conda vs pip
body: <p>I'm new to Python and recently installed PyCharm 2016.3 on Windows 10. I'm also using Anaconda 3.</p>
  
  <p>I don't know much about package management and would like to understand it better. Normally I just use <code>conda update --all</code> but I noticed (by checking the package list of my local PyCharm Interpreter) that this doesn't upgrade all packages to the latest version.</p>
  
  <p>One such package is Pillow of which there's a version 4.0.0 but conda (4.3.11) won't update it past 3.4.2. I tried <code>conda install pillow: 4.0.0</code> and got:</p>
  
  <pre><code>UnsatisfiableError: The following specifications were found to be in conflict:
    - pillow 4.0.0*
    - python 3.5*
    - spyder-app
  Use "conda info &lt;package&gt;" to see the dependencies for each package.
  </code></pre>
  
  <p>Later I found out that Pillow is also available on conda-forge so I tried <code>conda install -c conda-forge pillow=4.0.0</code> and got:</p>
  
  <pre><code>The following NEW packages will be INSTALLED:
  
      libiconv:  1.14-vc14_4   conda-forge [vc14]
      libxml2:   2.9.3-vc14_9  conda-forge [vc14]
      olefile:   0.44-py35_0   conda-forge
      vc:        14-0          conda-forge
  
  The following packages will be UPDATED:
  
      freetype:  2.5.5-vc14_2              [vc14] --&gt; 2.7-vc14_0    conda-forge [vc14]
      jpeg:      8d-vc14_2                 [vc14] --&gt; 9b-vc14_0     conda-forge [vc14]
      libtiff:   4.0.6-vc14_2              [vc14] --&gt; 4.0.6-vc14_7  conda-forge [vc14]
      pillow:    3.4.2-py35_0              --&gt; 4.0.0-py35_2  conda-forge
  
  The following packages will be SUPERCEDED by a higher-priority channel:
  
      conda:     4.3.11-py35_0             --&gt; 4.2.13-py35_0 conda-forge
      conda-env: 2.6.0-0                   --&gt; 2.6.0-0       conda-forge
      qt:        4.8.7-vc14_9              [vc14] --&gt; 4.8.7-vc14_6  conda-forge [vc14]
  </code></pre>
  
  <p>I decided not to proceed and instead tried <code>pip install pillow</code>. Since this command doesn't ask for confirmation the package was simply installed. Now when I type <code>conda list</code> I get:</p>
  
  <pre><code>Pillow                    4.0.0                     &lt;pip&gt;
  pillow                    3.4.2                    py35_0
  </code></pre>
  
  <p>The package list of the PyCharm Interpreter now shows Pillow as being version 4.0.0 but <code>conda update pillow</code> still returns:</p>
  
  <pre><code># All requested packages already installed.
  pillow                    3.4.2                    py35_0
  </code></pre>
  
  <p>My questions are:</p>
  
  <p>1) What should I rely on to keep all my packages up to date, without compatibility issues?</p>
  
  <p>2) Why did <code>conda install pillow: 4.0.0</code> return an error but <code>conda install -c conda-forge pillow=4.0.0</code> didn't?</p>
  
  <p>3) What do the * next to pillow 4.0.0 and python 3.5 in the list of dependencies mean?</p>
  
  <p>4) Since now I have both Pillow 3.4.2 (in <code>/anaconda3/pkgs</code>) and Pillow 4.0.0 (in <code>/anaconda3/lib/site-packages</code>) which one would be used if I imported Pillow?</p>
  
  <p>5) Does the superseding <code>conda: 4.3.11-py35_0 --&gt; 4.2.13-py35_0 conda-forge</code> mean conda is getting downgraded?</p>
  
  <p>6) What is the difference between the tags pip, py35_0, py35_4, np111py35_2, etc?</p>
  
  <p>7) PyCharm tells me there's a version 2.9.5 of package Jinja2 but both normal conda and conda-forge only find 2.9.4. From which channel is PyCharm getting this information?</p>