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>
Solved! Go to Solution.
Resolved it with the following:
conda clean --all --yes
conda update --all
conda install -c anaconda spyder
Resolved it with the following:
conda clean --all --yes
conda update --all
conda install -c anaconda spyder
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
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.
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
C:\ArcGIS\Resources\ArcPy\arcpy (then you have to follow the import paths from the __ini__ files
C:\ArcGIS\bin\Python\envs\arcgispro-py3
C:\ArcGIS\bin\Python\envs\dan
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
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?
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....
C:\arc_pro\bin\Python\envs\arcgispro-py3>
C:\arc_pro\bin\Python\envs\arcgispro-py3>conda install spyder --dry-run
C:\arc_pro\bin\Python\envs\arcgispro-py3>conda update numpy --no-pin --dry-run
C:\arc_pro\bin\Python\envs\arcgispro-py3>conda update numpy --no-pin
Now if things go realllll bad, you have some options.
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
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?
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
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