Trouble Installing Spyder

2525
9
Jump to solution
01-05-2019 11:17 PM
SimonJackson
Occasional Contributor III

Running ArcGIS Pro 2.2 on my own home PC (full admin access).

I am having trouble installing Spyder.

(arcgispro-py3) C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3>conda install spyder
Fetching package metadata ...............
Solving package specifications: .

Package plan for installation in environment C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3:

The following NEW packages will be INSTALLED:

    alabaster:                0.7.12-py36_0
    astroid:                  2.1.0-py36_0
    atomicwrites:             1.2.1-py36_0
    babel:                    2.6.0-py36_0
    cloudpickle:              0.6.1-py36_0
    cryptography-vectors:     2.3.1-py36_0
    docutils:                 0.14-py36h6012d8f_0
    fastcache:                1.0.2-py36hfa6e2cd_2
    icu:                      58.2-ha66f8fd_1
    imagesize:                1.1.0-py36_0
    isort:                    4.3.4-py36_0
    lazy-object-proxy:        1.3.1-py36hfa6e2cd_2
    libsodium:                1.0.16-h9d3ae62_0
    m2w64-gcc-libgfortran:    5.3.0-6
    m2w64-gcc-libs:           5.3.0-7
    m2w64-gcc-libs-core:      5.3.0-7
    m2w64-gmp:                6.1.0-2
    m2w64-libwinpthread-git:  5.0.0.4634.697f757-2
    mccabe:                   0.6.1-py36_1
    msys2-conda-epoch:        20160418-1
    numpy-base:               1.14.3-py36h555522e_1
    numpydoc:                 0.8.0-py36_0
    packaging:                18.0-py36_0
    pandoc:                   2.2.3.2-0
    prometheus_client:        0.5.0-py36_0
    psutil:                   5.4.7-py36hfa6e2cd_0
    pycodestyle:              2.4.0-py36_0
    pyflakes:                 2.0.0-py36_0
    pylint:                   2.2.2-py36_0
    pyqt:                     5.9.2-py36h6538335_2
    pywin32:                  223-py36hfa6e2cd_1
    qt:                       5.9.6-vc14h62aca36_0
    qtawesome:                0.5.3-py36_0
    qtconsole:                4.4.3-py36_0
    qtpy:                     1.5.2-py36_0
    rope:                     0.11.0-py36_0
    sip:                      4.19.8-py36h6538335_0
    snowballstemmer:          1.2.1-py36h763602f_0
    sphinx:                   1.8.2-py36_0
    sphinxcontrib:            1.0-py36_1
    sphinxcontrib-websupport: 1.1.0-py36_1
    spyder:                   3.3.2-py36_0
    spyder-kernels:           0.3.0-py36_0
    sqlite:                   3.25.2-hfa6e2cd_0
    typed-ast:                1.1.0-py36hfa6e2cd_0
    wrapt:                    1.10.11-py36hfa6e2cd_2
    zeromq:                   4.2.5-he025d50_1

The following packages will be UPDATED:

    attrs:                    17.4.0-py36_0                      --> 18.2.0-py36h28b3542_0
    bleach:                   2.1.3-py36_0                       --> 3.0.2-py36_0
    certifi:                  2018.1.18-py36_0                   --> 2018.11.29-py36_0
    cffi:                     1.11.5-py36h945400d_0              --> 1.11.5-py36h74b6da3_1
    chardet:                  3.0.4-py36h420ce6e_1               --> 3.0.4-py36_1
    colorama:                 0.3.9-py36h029ae33_0               --> 0.4.1-py36_0
    cryptography:             2.2.2-py36hfa6e2cd_0               --> 2.3-py36h74b6da3_0
    decorator:                4.2.1-py36_0                       --> 4.3.0-py36_0
    entrypoints:              0.2.3-py36hfd66bb0_2               --> 0.2.3-py36_2
    future:                   0.16.0-py36_1          esri        --> 0.17.1-py36_0
    html5lib:                 1.0.1-py36h047fa9f_0               --> 1.0.1-py36_0
    idna:                     2.6-py36h148d497_1                 --> 2.8-py36_0
    intel-openmp:             2018.0.0-arcgispro_0   esri        [arcgispro] --> 2018.0.3-arcgispro_0   esri [arcgispro]
    ipykernel:                4.8.2-py36_0                       --> 5.1.0-py36h39e3cac_0
    ipython:                  6.3.1-py36_0                       --> 7.2.0-py36h39e3cac_0
    ipywidgets:               7.2.1-py36_0                       --> 7.4.2-py36_0
    jedi:                     0.11.1-py36_0          esri        --> 0.13.2-py36_0
    jinja2:                   2.10-py36h292fed1_0                --> 2.10-py36_0
    jupyter_client:           5.2.3-py36_0                       --> 5.2.4-py36_0
    jupyter_core:             4.4.0-py36h56e9d50_0               --> 4.4.0-py36_0
    keyring:                  11.0.0-py36_0          esri        --> 17.0.0-py36_0
    kiwisolver:               1.0.1-py36h12c3424_0               --> 1.0.1-py36h6538335_0
    markupsafe:               1.0-py36h0e26971_1                 --> 1.0-py36hfa6e2cd_1
    mistune:                  0.8.3-py36_0                       --> 0.8.3-py36hfa6e2cd_1
    more-itertools:           4.1.0-py36_0                       --> 4.3.0-py36_0
    mpmath:                   1.0.0-py36hacc8adf_2               --> 1.1.0-py36_0
    nose:                     1.3.7-py36h1c3779e_2               --> 1.3.7-py36_2
    notebook:                 5.4.1-py36_0                       --> 5.7.4-py36_0
    numpy:                    1.14.2-py36h5c71026_1              --> 1.14.3-py36h9fa60d3_1
    openpyxl:                 2.5.2-py36_0                       --> 2.5.12-py36_0
    pandas:                   0.22.0-py36h6538335_0              --> 0.23.4-py36h830ac7b_0
    pandocfilters:            1.4.2-py36h3ef6317_1               --> 1.4.2-py36_1
    parso:                    0.1.1-py36hae3edee_0               --> 0.3.1-py36_0
    pickleshare:              0.7.4-py36h9de030f_0               --> 0.7.5-py36_0
    pip:                      9.0.3-py36_0                       --> 18.1-py36_0
    pluggy:                   0.6.0-py36hc7daf1e_0               --> 0.8.0-py36_0
    prompt_toolkit:           1.0.15-py36h60b8f86_0              --> 2.0.7-py36_0
    py:                       1.5.3-py36_0                       --> 1.7.0-py36_0
    pycparser:                2.18-py36hd053e01_1                --> 2.19-py36_0
    pygments:                 2.2.0-py36hb010967_0               --> 2.3.1-py36_0
    pyopenssl:                17.5.0-py36h5b7d817_0              --> 18.0.0-py36_0
    pyparsing:                2.2.0-py36h785a196_1               --> 2.3.0-py36_0
    pytest:                   3.5.0-py36_0                       --> 4.0.2-py36_0
    python-dateutil:          2.7.2-py36_0                       --> 2.7.5-py36_0
    pytz:                     2018.3-py36_0          esri        --> 2018.7-py36_0
    pywin32-ctypes:           0.1.2-py36_0           esri        --> 0.2.0-py36he119be9_0   esri
    pywinpty:                 0.5-py36_0             esri        --> 0.5.5-py36_1000
    pyzmq:                    17.0.0-py36hfa6e2cd_0              --> 17.1.2-py36hfa6e2cd_0
    requests:                 2.18.4-py36h4371aae_1              --> 2.21.0-py36_0
    scipy:                    1.0.1-py36hce232c7_0               --> 1.1.0-py36h672f292_0
    setuptools:               39.0.1-py36_0                      --> 40.6.3-py36_0
    six:                      1.11.0-py36h4db2310_1              --> 1.12.0-py36_0
    sympy:                    1.1.1-py36_0           esri        --> 1.3-py36_0
    testpath:                 0.3.1-py36h2698cfe_0               --> 0.4.2-py36_0
    tornado:                  5.0.2-py36_0                       --> 5.1.1-py36hfa6e2cd_0
    urllib3:                  1.22-py36h276f60a_0                --> 1.24.1-py36_0
    vs2015_runtime:           14.0.25420-0           esri        --> 14.15.26706-h3a45250_0
    webencodings:             0.5.1-py36h67c50ae_1               --> 0.5.1-py36_1
    wheel:                    0.31.0-py36_0                      --> 0.32.3-py36_0
    widgetsnbextension:       3.2.1-py36_0                       --> 3.4.2-py36_0
    win_inet_pton:            1.0.1-py36he67d7fd_1               --> 1.0.1-py36_1
    winkerberos:              0.7.0-py36_0                       --> 0.7.0-py36_1
    xlrd:                     1.1.0-py36h1cb58dc_1               --> 1.2.0-py36_0

The following packages will be SUPERSEDED by a higher-priority channel:

    nbconvert:                5.3.1-py36_1           esri        --> 5.3.1-py36_0
    send2trash:               1.5.0-py_0             conda-forge --> 1.5.0-py36_0

Proceed ([y]/n)? y

DEBUG menuinst_win32:__init__(199): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3', env_name: 'arcgispro-py3', mode: 'None', used_mode: 'system'
DEBUG menuinst_win32:create(323): Shortcut cmd is C:\Users\Simon\AppData\Local\Temp\_MEI59642\python.exe, args are ['C:\\Users\\Simon\\AppData\\Local\\Temp\\_MEI59642\\cwp.py', '"C:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\envs\\arcgispro-py3"', '"C:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\envs\\arcgispro-py3\\python.exe"', '"C:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\envs\\arcgispro-py3\\Scripts\\jupyter-notebook-script.py"', '%USERPROFILE%']
ERROR conda.core.link:_execute_actions(337): An error occurred while installing package 'defaults::fastcache-1.0.2-py36hfa6e2cd_2'.
CondaError: Cannot link a source that does not exist. C:\Program Files\ArcGIS\Pro\bin\Python\pkgs\fastcache-1.0.2-py36hfa6e2cd_2\Lib\site-packages\fastcache\__pycache__\__init__.cpython-36.pyc
Attempting to roll back.

DEBUG menuinst_win32:__init__(199): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3', env_name: 'arcgispro-py3', mode: 'None', used_mode: 'system'
DEBUG menuinst_win32:create(323): Shortcut cmd is C:\Users\Simon\AppData\Local\Temp\_MEI59642\python.exe, args are ['C:\\Users\\Simon\\AppData\\Local\\Temp\\_MEI59642\\cwp.py', '"C:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\envs\\arcgispro-py3"', '"C:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\envs\\arcgispro-py3\\python.exe"', '"C:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\envs\\arcgispro-py3\\Scripts\\jupyter-notebook-script.py"', '%USERPROFILE%']

CondaError: Cannot link a source that does not exist. C:\Program Files\ArcGIS\Pro\bin\Python\pkgs\fastcache-1.0.2-py36hfa6e2cd_2\Lib\site-packages\fastcache\__pycache__\__init__.cpython-36.pyc



(arcgispro-py3) C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3>
0 Kudos
1 Solution

Accepted Solutions
SimonJackson
Occasional Contributor III

Resolved it with the following:

conda clean --all --yes

conda update --all

conda install -c anaconda spyder

View solution in original post

9 Replies
SimonJackson
Occasional Contributor III

Resolved it with the following:

conda clean --all --yes

conda update --all

conda install -c anaconda spyder

DanPatterson_Retired
MVP Esteemed Contributor

Going forward, for single user installs, try a simpler install path and do a 'clone' to get an environment that is fully installable, yet retains the original esri package (install clone for 2.3 shown in this link.

/blogs/dan_patterson/2018/12/28/clone 

Then set your base environment to the clone and you can use conda or the package manager for installs or updates.

This will become more important as 2.3 comes to release date

SimonJackson
Occasional Contributor III

Hi Dan - Love your work - Big thanks for taking the time to brain-dump a lot of your wisdom into GeoNet - has saved me many a time.

 try a simpler install path

For ArcGIS Pro you mean?  I see in a lot of your screenshots, you don't have it in Program Files, but directly under C:/

I think when 2.3 comes along, I will do a clean wipe of Pro/Python/Anaconda, and take your approach.

0 Kudos
DanPatterson_Retired
MVP Esteemed Contributor

Simon.. when you go to the first install, you are asked 'install for all users' or something like that.  I don't, … my machine... one user... so then you get to navigate to a folder where you want to install it (I just made and use C:\ArcGIS

So the executable is located in : 

    C:\ArcGIS\bin\ArcGISPro.exe

  • arcpy starts in

   C:\ArcGIS\Resources\ArcPy\arcpy  (then you have to follow the import paths from the __ini__ files

  • python is in several envs

         C:\ArcGIS\bin\Python\envs\arcgispro-py3

          C:\ArcGIS\bin\Python\envs\dan

  • arcgisscripting gets installed in the lib folders of

         C:\ArcGIS\bin\Python\envs\arcgispro-py3\Lib\site-packages

         C:\ArcGIS\bin\Python\envs\dan\Lib\site-packages

The rest of the packages that I install or update are all done in my env.

I am not enamoured with the extra baggage with the clone, but apparently it guarantees 'you the user' and environment that will work if things go bad. 

My experience is to view a bad install as an opportunity to reinforce my software installation skills so they don't get rusty

CherylTrine
Occasional Contributor II

Couple of questions:

Following your suggestion, I used a simpler install path and cloned the arcgispro-py3, with addresses as follows:

C:\Arc_Pro\bin\Python\envs\arcgispro-py3

C:\Arc_Pro\bin\Python\envs\arcpro233

I did all updates and installation of Spyder using Conda and everything went fine.  A few days later, I went into ArcGis Pro Python Package Manager, to see how things worked from there.  Both environments show up, but both of them are locked down;  I cannot install or update packages in my clone (arcpro233) in ArcGIS Pro, the update and install buttons are grayed out.

Do you manage the environment solely from Conda, or is there something wrong with my install and I should be able to use the Python Package Manager?

I  cloned arcpro233 and let Esri choose the location in AppData to see if I could update that in the Python Package Manager.  It said it had 39 updates (why, I don't know because I had just updated arcpro233 in Conda).  I clicked Update All, when done, it still claimed to have 39 updates.  I then went to Conda and did  "conda update --all".  It said "All requested packages already installed."  So, does the Python Package Manager show updates for all packages in that environment, whether or not the updated package can be used in that environment?  So when I try to update, it doesn't  install the updated packages because they would mess up the environment?

0 Kudos
DanPatterson_Retired
MVP Esteemed Contributor

Cheryl... I do everything from conda to ensure that I have the right environment selected.  Ignore the updates available in the Package Manager, it doesn't appear to 'see' what conda 'knows'

Now... having said that.  If you have full rights to your computer (ie not muzzled by work limitations'), I no longer 'clone', hence my other blog

/blogs/dan_patterson/2018/12/28/clone 

What I do when a new version of ArcGIS Pro comes out is look at it as an opportunity to freshen up my computer.

I remove all vestiges of Arc* from my machine (keeping a copy of 'pinned' and 'environments.yaml').  Spyder keeps its state in your users folder.  But I do remove anything Arc* related from c:\Users....

  • I download the *.exe to disk into a know folder, where I keep the previous 2 version of Pro.
  • I execute the *.exe as administrator in that folder which will yield a *.cab and a *.msi file.  I run the *.msi and install Pro in C:\arc_pro (or C:\arcpro... whatever)
  • I crank up conda and you will be in the default ArcGIS environment

        C:\arc_pro\bin\Python\envs\arcgispro-py3>

  • I always do a 'test' install of any package by doing a 'dry-run

        C:\arc_pro\bin\Python\envs\arcgispro-py3>conda install spyder --dry-run

  • Sometimes esri has 'pinned' a package that I want to upgrade.  For instance in one of the recent versions, numpy was pinned at version 1.15.x,  I wanted 1.16, soooo

        C:\arc_pro\bin\Python\envs\arcgispro-py3>conda update numpy --no-pin --dry-run

  •   Living on the edge, I will proceed to...

        C:\arc_pro\bin\Python\envs\arcgispro-py3>conda update numpy --no-pin

  • I will list the packages that it will upgrade, downgrade and install where applicable.  Copy that list! to Notepad++ or Notepad so you have a record.
  • I test to make sure spyder works.  I then begin upgrading packages as I need them, typically esri runs a version or more behind in numpy, scipy and some of the other packages in the sci stack.

Now if things go realllll bad, you have some options.

  • Roll back an install.  First you need to get a list of revisions you have made to track down which something went south

C:\arc_pro\bin\Python\envs\arcgispro-py3> conda list --revisions

That will give you a listing of all the revisions you have made and you can determine where the bad install or improper package dependency wasn't good.

This is usually to do with a particular package depending on another package. Recently, a 'bug' in one package that I updated to the most recent version (Sphinx)

caused issues with numpy doc strings. So I had to rollback the update.

    C:\arc_pro\bin\Python\envs\arcgispro-py3> conda install --revision [revision number]

Where revision number will be an integer (no brackets either)

Now... for practice and if you really muddle everything up completely, you just go back delete everything except the *.exe (for safekeeping) and rerun the *.msi and start again.

I have followed this procedure and we even create an 'image' without a clone which we deploy to our network labs since we don't want students cloning stuff (we wipe and 

reimage the computers regularly to clean up after the 'clever' ones .

After this long missive.  If you do not have control over your computer, you will have to get the IT person a chair to sit beside you to go through this.  When they feel comfortable that the world won't come to an end, they might agree to deploy an image suitable to all and you can skip the cloning all together.  The purpose of cloning was/is to ensure that you have a useable Pro setup if the clone cause issues.   hmmmm, cleaning up and running the *.msi only takes a coffee in time, so weighing your options is up to you.

On a final note... If I want to try a radical deployment full of totally untested fun stuff (think machine learning, AI, numba and other unknown packages).  I do all that stuff on a separate machine because computers are way cheaper than my time.

Have fun and good luck

CherylTrine
Occasional Contributor II

Thanks for taking the time to provide this detailed outline your workflow!  You probably feel like you are writing the same thing over and over, but after reading many of your posts, which have been very helpful, this one, for me ties it all together.

Fortunately, I am master of my computer for the most part. I look forward to the next ArcGIS Pro update,so I will try it without cloning.

Concerning the --dry-run command, what am I looking for that will tell me whether or not the update/install isn't a good idea?

0 Kudos
DanPatterson_Retired
MVP Esteemed Contributor

Cheryl, as for --dry-run ...I use it largely to see whether a certain package will be downgraded when I am upgrading or installing another package.  For instance, when the 'arcgis 1.6 module was around, I had already upgraded to 1.6.1 and I wanted to upgrade numpy to 1.16.3.  The --dry-run indicated that a rollback was in order, so I did a --no-pin --dry-run and found out that esri's 'pinned' file could be overridden without any roll back, so i just did a …

    C:\arc_pro\bin\Python\envs\arcgispro-py3>conda update numpy --no-pin

I lived to tell this tale

I am now on ArcGIS Pro 2.4 Beta 2 and done subsequent upgrades and things are working well.  Esri isn't really advertising that fact, but I guess they realize that there are indeed valid situations where cloning isn't needed or desirable. 

Picture teaching labs with 50+ computers.  The base environment is installed at the beginning of term.  Some package has an upgrade that fixes a 'bug' or adds 'new functionality'.  Now picture telling the students to 'clone' the environment and do the upgrade... you now have two large installations.  Next day, different class... clone again by different people... now 3 installations... Student day one comes into the lab sits at a different computer... clone again … and so on.  What we do is install one 'computer image', if an update needs to be done, it is upgraded, then blasted out to all the machines.  No cloning, no wasted space and no problems.  Of course, we have one machine for image testing before we deploy to the universe 

CherylTrine
Occasional Contributor II

Thanks again, for the explanation.  I tried your --dry-run and --no-pin "trick", and now I have an updated numpy without a downgraded arcgis

0 Kudos