spyder-ide / qtawesome

Iconic fonts in PyQt and PySide applications
https://qtawesome.readthedocs.io/en/latest/index.html
MIT License
802 stars 106 forks source link

PermissionError: [WinError 5] Access is denied #236

Closed zariiii9003 closed 6 months ago

zariiii9003 commented 1 year ago

I installed spyder in a fresh environment, but qtawesome raises an exception on spyder startup. Please take a look at the traceback. Why does it try to delete files that it does not own?

It calls os.remove('C:\\Users\\USERNAME\\AppData\\Local\\Microsoft\\Windows\\Fonts\\codicon.ttf')

Traceback
``` (spyder-env) C:\Users\USERNAME>spyder fromIccProfile: failed minimal tag size sanity Traceback (most recent call last): File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\Scripts\spyder-script.py", line 10, in sys.exit(main()) File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\app\start.py", line 257, in main mainwindow.main(options, args) File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\app\mainwindow.py", line 1823, in main mainwindow = create_window(MainWindow, app, splash, options, args) File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\app\utils.py", line 289, in create_window main.setup() File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\app\mainwindow.py", line 732, in setup internal_plugins = find_internal_plugins() File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\app\find_plugins.py", line 40, in find_internal_plugins mod = importlib.import_module(entry_point.module_name) File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1050, in _gcd_import File "", line 1027, in _find_and_load File "", line 1006, in _find_and_load_unlocked File "", line 688, in _load_unlocked File "", line 883, in exec_module File "", line 241, in _call_with_frames_removed File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\plugins\pylint\plugin.py", line 22, in from spyder.plugins.pylint.confpage import PylintConfigPage File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\plugins\pylint\confpage.py", line 16, in from spyder.plugins.pylint.main_widget import (MAX_HISTORY_ENTRIES, File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\plugins\pylint\main_widget.py", line 90, in class CategoryItem(QTreeWidgetItem): File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\plugins\pylint\main_widget.py", line 102, in CategoryItem 'icon': ima.icon("convention") File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\spyder\utils\icon_manager.py", line 434, in icon qta.load_font('spyder', 'spyder.ttf', 'spyder-charmap.json', File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\qtawesome\__init__.py", line 280, in load_font return _instance().load_font(prefix, ttf_filename, charmap_filename, directory) File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\qtawesome\__init__.py", line 130, in _instance _resource['iconic'] = IconicFont(*_BUNDLED_FONTS) File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\qtawesome\iconic_font.py", line 338, in __init__ self.load_font(*fargs) File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\qtawesome\iconic_font.py", line 374, in load_font directory = self._get_fonts_directory() File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\qtawesome\iconic_font.py", line 593, in _get_fonts_directory fonts_directory = self._install_fonts(fonts_directory) File "C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env\lib\site-packages\qtawesome\iconic_font.py", line 629, in _install_fonts os.remove(dst_path) PermissionError: [WinError 5] Access is denied: 'C:\\Users\\USERNAME\\AppData\\Local\\Microsoft\\Windows\\Fonts\\codicon.ttf' ```
Package List
``` (spyder-env) C:\Users\USERNAME>mamba list # packages in environment at C:\Users\USERNAME\AppData\Local\mambaforge\envs\spyder-env: # # Name Version Build Channel alabaster 0.7.13 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote appdirs 1.4.4 pypi_0 pypi arrow 1.2.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote asammdf 7.1.0 py310he2412df_1 https://my-on-premise-mirror.com/conda_forge-conda-remote astroid 2.15.4 py310h5588dad_0 https://my-on-premise-mirror.com/conda_forge-conda-remote asttokens 2.2.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote atomicwrites 1.4.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote attrs 23.1.0 pyh71513ae_1 https://my-on-premise-mirror.com/conda_forge-conda-remote autopep8 2.0.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote babel 2.12.1 pyhd8ed1ab_1 https://my-on-premise-mirror.com/conda_forge-conda-remote backcall 0.2.0 pyh9f0ad1d_0 https://my-on-premise-mirror.com/conda_forge-conda-remote backports 1.0 pyhd8ed1ab_3 https://my-on-premise-mirror.com/conda_forge-conda-remote backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote bcrypt 3.2.2 py310h8d17308_1 https://my-on-premise-mirror.com/conda_forge-conda-remote beautifulsoup4 4.12.2 pyha770c72_0 https://my-on-premise-mirror.com/conda_forge-conda-remote binaryornot 0.4.4 py_1 https://my-on-premise-mirror.com/conda_forge-conda-remote black 23.3.0 py310h5588dad_1 https://my-on-premise-mirror.com/conda_forge-conda-remote bleach 6.0.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote brotli 1.0.9 hcfcfb64_8 https://my-on-premise-mirror.com/conda_forge-conda-remote brotli-bin 1.0.9 hcfcfb64_8 https://my-on-premise-mirror.com/conda_forge-conda-remote brotlipy 0.7.0 py310h8d17308_1005 https://my-on-premise-mirror.com/conda_forge-conda-remote bzip2 1.0.8 h8ffe710_4 https://my-on-premise-mirror.com/conda_forge-conda-remote ca-certificates 2023.5.7 h56e8100_0 https://my-on-premise-mirror.com/conda_forge-conda-remote canmatrix 0.9.5 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote certifi 2023.5.7 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote cffi 1.15.1 py310h628cb3f_3 https://my-on-premise-mirror.com/conda_forge-conda-remote chardet 5.1.0 py310h5588dad_0 https://my-on-premise-mirror.com/conda_forge-conda-remote charset-normalizer 3.1.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote click 8.1.3 win_pyhd8ed1ab_2 https://my-on-premise-mirror.com/conda_forge-conda-remote cloudpickle 2.2.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote colorama 0.4.6 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote comm 0.1.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote contourpy 1.0.7 py310h232114e_0 https://my-on-premise-mirror.com/conda_forge-conda-remote cookiecutter 2.1.1 pyh6c4a22f_0 https://my-on-premise-mirror.com/conda_forge-conda-remote cryptography 40.0.2 py310h6e82f81_0 https://my-on-premise-mirror.com/conda_forge-conda-remote cycler 0.11.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote debugpy 1.6.7 py310h00ffb61_0 https://my-on-premise-mirror.com/conda_forge-conda-remote decorator 5.1.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote defusedxml 0.7.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote diff-match-patch 20230430 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote dill 0.3.6 pyhd8ed1ab_1 https://my-on-premise-mirror.com/conda_forge-conda-remote docstring-to-markdown 0.12 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote docutils 0.20 py310h5588dad_0 https://my-on-premise-mirror.com/conda_forge-conda-remote elementpath 4.1.2 pypi_0 pypi entrypoints 0.4 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote executing 1.2.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote flake8 6.0.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote fonttools 4.39.4 py310h8d17308_0 https://my-on-premise-mirror.com/conda_forge-conda-remote freetype 2.12.1 h546665d_1 https://my-on-premise-mirror.com/conda_forge-conda-remote future 0.18.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote gettext 0.21.1 h5728263_0 https://my-on-premise-mirror.com/conda_forge-conda-remote glib 2.76.2 h12be248_0 https://my-on-premise-mirror.com/conda_forge-conda-remote glib-tools 2.76.2 h12be248_0 https://my-on-premise-mirror.com/conda_forge-conda-remote gst-plugins-base 1.22.0 h001b923_2 https://my-on-premise-mirror.com/conda_forge-conda-remote gstreamer 1.22.0 h6b5321d_2 https://my-on-premise-mirror.com/conda_forge-conda-remote icu 72.1 h63175ca_0 https://my-on-premise-mirror.com/conda_forge-conda-remote idna 3.4 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote imagesize 1.4.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote importlib-metadata 6.6.0 pyha770c72_0 https://my-on-premise-mirror.com/conda_forge-conda-remote importlib_metadata 6.6.0 hd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote importlib_resources 5.12.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote inflection 0.5.1 pyh9f0ad1d_0 https://my-on-premise-mirror.com/conda_forge-conda-remote intel-openmp 2023.1.0 h57928b3_46319 https://my-on-premise-mirror.com/conda_forge-conda-remote intervaltree 3.1.0 pyhd8ed1ab_1 https://my-on-premise-mirror.com/conda_forge-conda-remote ipykernel 6.23.0 pyh025b116_0 https://my-on-premise-mirror.com/conda_forge-conda-remote ipython 8.13.2 pyh08f2357_0 https://my-on-premise-mirror.com/conda_forge-conda-remote ipython_genutils 0.2.0 py_1 https://my-on-premise-mirror.com/conda_forge-conda-remote isa-l 2.30.0 h8ffe710_4 https://my-on-premise-mirror.com/conda_forge-conda-remote isort 5.12.0 pyhd8ed1ab_1 https://my-on-premise-mirror.com/conda_forge-conda-remote jaraco.classes 3.2.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote jedi 0.18.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote jellyfish 0.9.0 py310h8d17308_2 https://my-on-premise-mirror.com/conda_forge-conda-remote jinja2 3.1.2 pyhd8ed1ab_1 https://my-on-premise-mirror.com/conda_forge-conda-remote jinja2-time 0.2.0 pyhd8ed1ab_3 https://my-on-premise-mirror.com/conda_forge-conda-remote jsonschema 4.17.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote jupyter_client 8.2.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote jupyter_core 5.3.0 py310h5588dad_0 https://my-on-premise-mirror.com/conda_forge-conda-remote jupyterlab_pygments 0.2.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote keyring 23.13.1 py310h5588dad_0 https://my-on-premise-mirror.com/conda_forge-conda-remote kiwisolver 1.4.4 py310h232114e_1 https://my-on-premise-mirror.com/conda_forge-conda-remote krb5 1.20.1 heb0366b_0 https://my-on-premise-mirror.com/conda_forge-conda-remote lazy-object-proxy 1.9.0 py310h8d17308_0 https://my-on-premise-mirror.com/conda_forge-conda-remote lcms2 2.15 h3e3b177_1 https://my-on-premise-mirror.com/conda_forge-conda-remote lerc 4.0.0 h63175ca_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libblas 3.9.0 16_win64_mkl https://my-on-premise-mirror.com/conda_forge-conda-remote libbrotlicommon 1.0.9 hcfcfb64_8 https://my-on-premise-mirror.com/conda_forge-conda-remote libbrotlidec 1.0.9 hcfcfb64_8 https://my-on-premise-mirror.com/conda_forge-conda-remote libbrotlienc 1.0.9 hcfcfb64_8 https://my-on-premise-mirror.com/conda_forge-conda-remote libcblas 3.9.0 16_win64_mkl https://my-on-premise-mirror.com/conda_forge-conda-remote libclang 16.0.3 default_h8b4101f_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libclang13 16.0.3 default_h45d3cf4_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libdeflate 1.18 hcfcfb64_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libffi 3.4.2 h8ffe710_5 https://my-on-premise-mirror.com/conda_forge-conda-remote libglib 2.76.2 he8f3873_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libhwloc 2.9.1 h51c2c0f_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libiconv 1.17 h8ffe710_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libjpeg-turbo 2.1.5.1 hcfcfb64_0 https://my-on-premise-mirror.com/conda_forge-conda-remote liblapack 3.9.0 16_win64_mkl https://my-on-premise-mirror.com/conda_forge-conda-remote libogg 1.3.4 h8ffe710_1 https://my-on-premise-mirror.com/conda_forge-conda-remote libpng 1.6.39 h19919ed_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libsodium 1.0.18 h8d14728_1 https://my-on-premise-mirror.com/conda_forge-conda-remote libspatialindex 1.9.3 h39d44d4_4 https://my-on-premise-mirror.com/conda_forge-conda-remote libsqlite 3.41.2 hcfcfb64_1 https://my-on-premise-mirror.com/conda_forge-conda-remote libtiff 4.5.0 h6c8260b_6 https://my-on-premise-mirror.com/conda_forge-conda-remote libvorbis 1.3.7 h0e60522_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libwebp 1.3.0 hcfcfb64_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libwebp-base 1.3.0 hcfcfb64_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libxcb 1.13 hcd874cb_1004 https://my-on-premise-mirror.com/conda_forge-conda-remote libxml2 2.10.4 hc3477c8_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libxslt 1.1.37 h0192164_0 https://my-on-premise-mirror.com/conda_forge-conda-remote libzlib 1.2.13 hcfcfb64_4 https://my-on-premise-mirror.com/conda_forge-conda-remote llvmlite 0.39.1 py310hb84602e_1 https://my-on-premise-mirror.com/conda_forge-conda-remote lxml 4.9.2 py310hc0e5b84_0 https://my-on-premise-mirror.com/conda_forge-conda-remote lz4 4.3.2 py310hbbb2075_0 https://my-on-premise-mirror.com/conda_forge-conda-remote lz4-c 1.9.4 hcfcfb64_0 https://my-on-premise-mirror.com/conda_forge-conda-remote m2w64-gcc-libgfortran 5.3.0 6 https://my-on-premise-mirror.com/conda_forge-conda-remote m2w64-gcc-libs 5.3.0 7 https://my-on-premise-mirror.com/conda_forge-conda-remote m2w64-gcc-libs-core 5.3.0 7 https://my-on-premise-mirror.com/conda_forge-conda-remote m2w64-gmp 6.1.0 2 https://my-on-premise-mirror.com/conda_forge-conda-remote m2w64-libwinpthread-git 5.0.0.4634.697f757 2 https://my-on-premise-mirror.com/conda_forge-conda-remote markupsafe 2.1.2 py310h8d17308_0 https://my-on-premise-mirror.com/conda_forge-conda-remote matplotlib 3.7.1 py310h5588dad_0 https://my-on-premise-mirror.com/conda_forge-conda-remote matplotlib-base 3.7.1 py310h51140c5_0 https://my-on-premise-mirror.com/conda_forge-conda-remote matplotlib-inline 0.1.6 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote mccabe 0.7.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote mistune 2.0.5 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote mkl 2022.1.0 h6a75c08_874 https://my-on-premise-mirror.com/conda_forge-conda-remote more-itertools 9.1.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote msys2-conda-epoch 20160418 1 https://my-on-premise-mirror.com/conda_forge-conda-remote munkres 1.1.4 pyh9f0ad1d_0 https://my-on-premise-mirror.com/conda_forge-conda-remote mypy_extensions 1.0.0 pyha770c72_0 https://my-on-premise-mirror.com/conda_forge-conda-remote natsort 8.3.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote nbclient 0.7.4 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote nbconvert 7.4.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote nbconvert-core 7.4.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote nbconvert-pandoc 7.4.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote nbformat 5.8.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote nest-asyncio 1.5.6 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote nptdms 1.6.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote numba 0.56.4 py310h19bcfe9_1 https://my-on-premise-mirror.com/conda_forge-conda-remote numexpr 2.7.3 py310hf5e1058_2 https://my-on-premise-mirror.com/conda_forge-conda-remote numpy 1.23.5 py310h4a8f9c9_0 https://my-on-premise-mirror.com/conda_forge-conda-remote numpydoc 1.5.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote openjpeg 2.5.0 ha2aaf27_2 https://my-on-premise-mirror.com/conda_forge-conda-remote openssl 3.1.0 hcfcfb64_3 https://my-on-premise-mirror.com/conda_forge-conda-remote packaging 23.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pandas 2.0.1 py310h1c4a608_1 https://my-on-premise-mirror.com/conda_forge-conda-remote pandoc 2.19.2 h57928b3_2 https://my-on-premise-mirror.com/conda_forge-conda-remote pandocfilters 1.5.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote paramiko 3.1.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote parso 0.8.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pathspec 0.11.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote patsy 0.5.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pcre2 10.40 h17e33f8_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pexpect 4.8.0 pyh1a96a4e_2 https://my-on-premise-mirror.com/conda_forge-conda-remote pickleshare 0.7.5 py_1003 https://my-on-premise-mirror.com/conda_forge-conda-remote pillow 9.5.0 py310h3dcae36_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pip 23.1.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pkgutil-resolve-name 1.3.10 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote platformdirs 3.5.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pluggy 1.0.0 pyhd8ed1ab_5 https://my-on-premise-mirror.com/conda_forge-conda-remote ply 3.11 py_1 https://my-on-premise-mirror.com/conda_forge-conda-remote pooch 1.7.0 pyha770c72_3 https://my-on-premise-mirror.com/conda_forge-conda-remote prompt-toolkit 3.0.38 pyha770c72_0 https://my-on-premise-mirror.com/conda_forge-conda-remote prompt_toolkit 3.0.38 hd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote psutil 5.9.5 py310h8d17308_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pthread-stubs 0.4 hcd874cb_1001 https://my-on-premise-mirror.com/conda_forge-conda-remote pthreads-win32 2.9.1 hfa6e2cd_3 https://my-on-premise-mirror.com/conda_forge-conda-remote ptyprocess 0.7.0 pyhd3deb0d_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pure_eval 0.2.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pycodestyle 2.10.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pycparser 2.21 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pydocstyle 6.3.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pyee 8.2.2 pypi_0 pypi pyflakes 3.0.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pygments 2.15.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pylint 2.17.4 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pylint-venv 3.0.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pyls-spyder 0.4.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pynacl 1.5.0 py310h635b8f1_2 https://my-on-premise-mirror.com/conda_forge-conda-remote pyopenssl 23.1.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pyparsing 3.0.9 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pyppeteer 1.0.2 pypi_0 pypi pyqt 5.15.7 py310h1fd54f2_3 https://my-on-premise-mirror.com/conda_forge-conda-remote pyqt5-sip 12.11.0 py310h00ffb61_3 https://my-on-premise-mirror.com/conda_forge-conda-remote pyqtwebengine 5.15.7 py310he49db7d_3 https://my-on-premise-mirror.com/conda_forge-conda-remote pyrsistent 0.19.3 py310h8d17308_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pysocks 1.7.1 pyh0701188_6 https://my-on-premise-mirror.com/conda_forge-conda-remote python 3.10.11 h4de0772_0_cpython https://my-on-premise-mirror.com/conda_forge-conda-remote python-dateutil 2.8.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote python-fastjsonschema 2.16.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote python-isal 1.1.0 py310h8d17308_2 https://my-on-premise-mirror.com/conda_forge-conda-remote python-lsp-black 1.2.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote python-lsp-jsonrpc 1.0.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote python-lsp-server 1.7.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote python-lsp-server-base 1.7.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote python-slugify 8.0.1 pyhd8ed1ab_1 https://my-on-premise-mirror.com/conda_forge-conda-remote python-tzdata 2023.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote python_abi 3.10 3_cp310 https://my-on-premise-mirror.com/conda_forge-conda-remote pytoolconfig 1.2.5 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pytz 2023.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote pywin32 306 pypi_0 pypi pywin32-ctypes 0.2.0 py310h5588dad_1006 https://my-on-premise-mirror.com/conda_forge-conda-remote pyyaml 6.0 py310h8d17308_5 https://my-on-premise-mirror.com/conda_forge-conda-remote pyzmq 25.0.2 py310hcd737a0_0 https://my-on-premise-mirror.com/conda_forge-conda-remote qdarkstyle 3.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote qstylizer 0.2.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote qt-main 5.15.8 h2c8576c_11 https://my-on-premise-mirror.com/conda_forge-conda-remote qt-webengine 5.15.8 h5b1ea0b_0 https://my-on-premise-mirror.com/conda_forge-conda-remote qtawesome 1.2.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote qtconsole 5.4.3 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote qtconsole-base 5.4.3 pyha770c72_0 https://my-on-premise-mirror.com/conda_forge-conda-remote qtpy 2.3.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote requests 2.29.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote rope 1.8.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote rtree 1.0.1 py310h1cbd46b_1 https://my-on-premise-mirror.com/conda_forge-conda-remote scipy 1.10.1 py310h578b7cb_3 https://my-on-premise-mirror.com/conda_forge-conda-remote seaborn 0.12.2 hd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote seaborn-base 0.12.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote setuptools 67.7.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sip 6.7.9 py310h00ffb61_0 https://my-on-premise-mirror.com/conda_forge-conda-remote six 1.16.0 pyh6c4a22f_0 https://my-on-premise-mirror.com/conda_forge-conda-remote snowballstemmer 2.2.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sortedcontainers 2.4.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote soupsieve 2.3.2.post1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sphinx 7.0.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sphinxcontrib-applehelp 1.0.4 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sphinxcontrib-devhelp 1.0.2 py_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sphinxcontrib-htmlhelp 2.0.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sphinxcontrib-jsmath 1.0.1 py_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sphinxcontrib-qthelp 1.0.3 py_0 https://my-on-premise-mirror.com/conda_forge-conda-remote sphinxcontrib-serializinghtml 1.1.5 pyhd8ed1ab_2 https://my-on-premise-mirror.com/conda_forge-conda-remote spyder 5.4.3 py310h5588dad_0 https://my-on-premise-mirror.com/conda_forge-conda-remote spyder-kernels 2.4.3 win_pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote stack_data 0.6.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote statsmodels 0.14.0 py310h9b08ddd_1 https://my-on-premise-mirror.com/conda_forge-conda-remote tbb 2021.9.0 h91493d7_0 https://my-on-premise-mirror.com/conda_forge-conda-remote text-unidecode 1.3 py_0 https://my-on-premise-mirror.com/conda_forge-conda-remote textdistance 4.5.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote three-merge 0.1.1 pyh9f0ad1d_0 https://my-on-premise-mirror.com/conda_forge-conda-remote tinycss2 1.2.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote tk 8.6.12 h8ffe710_0 https://my-on-premise-mirror.com/conda_forge-conda-remote toml 0.10.2 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote tomli 2.0.1 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote tomlkit 0.11.8 pyha770c72_0 https://my-on-premise-mirror.com/conda_forge-conda-remote tornado 6.3 py310h8d17308_0 https://my-on-premise-mirror.com/conda_forge-conda-remote tqdm 4.65.0 pypi_0 pypi traitlets 5.9.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote typing 3.10.0.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote typing-extensions 4.5.0 hd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote typing_extensions 4.5.0 pyha770c72_0 https://my-on-premise-mirror.com/conda_forge-conda-remote tzdata 2023c h71feb2d_0 https://my-on-premise-mirror.com/conda_forge-conda-remote ucrt 10.0.22621.0 h57928b3_0 https://my-on-premise-mirror.com/conda_forge-conda-remote ujson 5.7.0 py310h00ffb61_0 https://my-on-premise-mirror.com/conda_forge-conda-remote unicodedata2 15.0.0 py310h8d17308_0 https://my-on-premise-mirror.com/conda_forge-conda-remote unidecode 1.3.6 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote urllib3 1.26.15 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote vc 14.3 hb25d44b_16 https://my-on-premise-mirror.com/conda_forge-conda-remote vc14_runtime 14.34.31931 h5081d32_16 https://my-on-premise-mirror.com/conda_forge-conda-remote vs2015_runtime 14.34.31931 hed1258a_16 https://my-on-premise-mirror.com/conda_forge-conda-remote watchdog 3.0.0 py310h5588dad_0 https://my-on-premise-mirror.com/conda_forge-conda-remote wcwidth 0.2.6 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote webencodings 0.5.1 py_1 https://my-on-premise-mirror.com/conda_forge-conda-remote websockets 10.4 pypi_0 pypi whatthepatch 1.0.5 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote wheel 0.40.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote win_inet_pton 1.1.0 pyhd8ed1ab_6 https://my-on-premise-mirror.com/conda_forge-conda-remote wrapt 1.15.0 py310h8d17308_0 https://my-on-premise-mirror.com/conda_forge-conda-remote xlrd 2.0.1 pyhd8ed1ab_3 https://my-on-premise-mirror.com/conda_forge-conda-remote xlsxwriter 3.1.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote xlwt 1.3.0 py_1 https://my-on-premise-mirror.com/conda_forge-conda-remote xmlschema 2.2.3 pypi_0 pypi xorg-libxau 1.0.9 hcd874cb_0 https://my-on-premise-mirror.com/conda_forge-conda-remote xorg-libxdmcp 1.1.3 hcd874cb_0 https://my-on-premise-mirror.com/conda_forge-conda-remote xsdata 22.12 pypi_0 pypi xz 5.2.6 h8d14728_0 https://my-on-premise-mirror.com/conda_forge-conda-remote yaml 0.2.5 h8ffe710_2 https://my-on-premise-mirror.com/conda_forge-conda-remote yapf 0.32.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote zeromq 4.3.4 h0e60522_1 https://my-on-premise-mirror.com/conda_forge-conda-remote zipp 3.15.0 pyhd8ed1ab_0 https://my-on-premise-mirror.com/conda_forge-conda-remote zstd 1.5.2 h12be248_6 https://my-on-premise-mirror.com/conda_forge-conda-remote ```
ccordoba12 commented 1 year ago

Hey @zariiii9003, thanks for reporting. It seems this is caused because at some point you ran Spyder as admin and now it's not possible for it to install some fonts it needs as a non-admin user.

Can you confirm that?

zariiii9003 commented 1 year ago

No, that's the first time i installed it on that device. But i just noticed another thing that might be relevant: the device runs on Windows Server 2016 Version 1607

ccordoba12 commented 1 year ago

Ok, that could be the issue. This new feature is available for recent versions of Windows 10. However, we'll try to check if QtAwesome is compatible the Windows in which it's installed before trying to install its fonts.

ccordoba12 commented 1 year ago

@CAM-Gerlach, you mentioned that you also found this issue in the computer of a person you were trying to help, right?

CAM-Gerlach commented 1 year ago

Thanks for the ping—Yup, this was the same issue. Even though the font file was present in that directory but not actually installed on the system, I was also completely unable to delete it manually even after restarting and also running a special tool to delete files on restart to avoid them being "in use". This was on a nearly brand new user account that the user had just created, though she had installed and then uninstalled Anaconda previous to installing Spyder standalone (but the machine had been restarted in between).

I was going to have IT take a look with admin permissions, but the next day she reported she had fixed it by installing an older version of Spyder (AFAIK, prior to you making the change to fix the font not loading issue I previously reported on another user's machine here), uninstalling that, and then re-installing the latest version.

I can't check now, but I believe that machine was still running Windows 10 Enterprise 1903.

For what it's worth, here's the full traceback on Spyder launch:

Full traceback ```python-traceback Traceback (most recent call last): File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Scripts\spyder-script.py", line 10, in sys.exit(main()) ^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\app\start.py", line 257, in main mainwindow.main(options, args) File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\app\mainwindow.py", line 1823, in main mainwindow = create_window(MainWindow, app, splash, options, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\app\utils.py", line 289, in create_window main.setup() File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\app\mainwindow.py", line 732, in setup internal_plugins = find_internal_plugins() ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\app\find_plugins.py", line 40, in find_internal_plugins mod = importlib.import_module(entry_point.module_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 1206, in _gcd_import File "", line 1178, in _find_and_load File "", line 1149, in _find_and_load_unlocked File "", line 690, in _load_unlocked File "", line 940, in exec_module File "", line 241, in _call_with_frames_removed File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\plugins\pylint\plugin.py", line 22, in from spyder.plugins.pylint.confpage import PylintConfigPage File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\plugins\pylint\confpage.py", line 16, in from spyder.plugins.pylint.main_widget import (MAX_HISTORY_ENTRIES, File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\plugins\pylint\main_widget.py", line 90, in class CategoryItem(QTreeWidgetItem): File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\plugins\pylint\main_widget.py", line 102, in CategoryItem 'icon': ima.icon("convention") ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\spyder\utils\icon_manager.py", line 434, in icon qta.load_font('spyder', 'spyder.ttf', 'spyder-charmap.json', File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\qtawesome\__init__.py", line 280, in load_font return _instance().load_font(prefix, ttf_filename, charmap_filename, directory) ^^^^^^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\qtawesome\__init__.py", line 130, in _instance _resource['iconic'] = IconicFont(*_BUNDLED_FONTS) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\qtawesome\iconic_font.py", line 338, in __init__ self.load_font(*fargs) File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\qtawesome\iconic_font.py", line 374, in load_font directory = self._get_fonts_directory() ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\qtawesome\iconic_font.py", line 593, in _get_fonts_directory fonts_directory = self._install_fonts(fonts_directory) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\kcarmer\AppData\Local\miniforge3\envs\spyderenv\Lib\site-packages\qtawesome\iconic_font.py", line 629, in _install_fonts os.remove(dst_path) PermissionError: [WinError 5] Access is denied: 'C:\\Users\\kcarmer\\AppData\\Local\\Microsoft\\Windows\\Fonts\\materialdesignicons5-webfont.ttf' ```
ccordoba12 commented 1 year ago

According to the QtAwesome code, this situation happens when we're unable to install our fonts for the current user:

https://github.com/spyder-ide/qtawesome/blob/dc2dfbe80e8d25264be568ff041dcd26477055df/qtawesome/iconic_font.py#L628-L631

So, we could catch the error generated by os.remove but QtAwesome would still raise an error and crash Spyder. And since we're planning to remove the Spyder 2 icon theme in Spyder 6, this is going to be a bigger problem.

One option is to catch the WindowsError above in Spyder (after catching the os.remove one here) and show a dialog to users saying that their Windows version is too old and not compatible with Spyder. By the way, we're already doing something similar but for FontError:

https://github.com/spyder-ide/spyder/blob/21c28ac87cd3d7a02fb6972536a1b752bafeb550/spyder/app/mainwindow.py#L1824-L1831

The other option is to stop using QtAwesome in Spyder, extract all icons that we're grabbing from Material Design and add them to Spyder as SVGs. However, I think that's way too much work for our small team.

@dalthviz, @CAM-Gerlach, what do you think?

I can't check now, but I believe that machine was still running Windows 10 Enterprise 1903.

Could you check again, if possible? This feature was introduced on Windows 10 1803, according to MS docs.

CAM-Gerlach commented 1 year ago

@dalthviz, @CAM-Gerlach, what do you think?

If it was introduced in 1803 and reliably works for everything above that, then while not ideal, it doesn't seem that unreasonable to drop support for Windows versions below that for Spyder 6, since at least by the time it is released later this year, the Windows versions below that will all be EoL for some time, except for Server 2016 (and 1507 and 1607 LTSC, which are very unlikely to have major version desktop software updates anyway). However, we should be sure that it is working reliably first and this issue is resolved.

Could you check again, if possible? This feature was introduced on Windows 10 1803, according to MS docs.

Yeah, it definitely shouldn't be older than that version, but I asked the user to double check and will let you know what I hear. Unfortunately, I can't seem to repro it on my Windows machine to be able to test myself, nor can I actually repro now on that machine after she installed the older Spyder version first then installed the newer version.

dalthviz commented 10 months ago

@dalthviz, @CAM-Gerlach, what do you think?

I think we should catch the error caused by os.remove as you said but also not raise a WindowsError but some warning saying users that a font was unable to be loaded. Besides that, if an error needs to be raised, it probably should be also a FontError so I guess no change will be needed from the Spyder side of things? 🤔

ccordoba12 commented 10 months ago

Besides that, if an error needs to be raised, it probably should be also a FontError so I guess no change will be needed from the Spyder side of things?

Yeah, that's a good idea too, i.e. we could raise FontError so that Spyder can catch it and display the same message we're displaying right now about problems with the QtAwesome fonts.

Since I like it better than my original suggestion, I think we should go with it instead.

dalthviz commented 10 months ago

Note: This could be happening due to the file being used by the system or some other process so the font is already loaded/being used (maybe we are not properly detecting that with the gdi32.AddFontResourceW(dst_path) call?)

ccordoba12 commented 10 months ago

That's a very good point. In that case, we should pass in the try/except around os.remove instead of raising an error.

jlitster-freeus commented 9 months ago

This is slightly different, but related. I was running qtawesome on two different Python installations (one with qtawesome 1.2.3 and one with qtawesome 1.3.0) (actually, one was a Python app that was packaged to an exe with PyInstaller) and I got a PermissionError on shutil.copy, a few lines above the os.remove. For me, this only happened when one was running and I started the other one, since one version was using the font and the other was trying to update it. I updated the one instance from version 1.2.3 to version 1.3.0 and the problem went away (because the codicon.ttf files were the same), but I suspect it would still be an issue anytime the font files get updated in qtawesome.

For me, it means that I can't run PyInstaller apps that have different versions of qtawesome at the same time, e.g. one that was built with the latest qtawesome and one that was built last week.

Traceback on qtawesome 1.3.0:


Uncaught exception: Traceback (most recent call last):
  File "C:\Users\jlitster\AppData\Local\Programs\Python\Python311\Lib\site-packages\qtawesome\__init__.py", line 234, in icon
    return _instance().icon(*names, **kwargs)
           ^^^^^^^^^^^
  File "C:\Users\jlitster\AppData\Local\Programs\Python\Python311\Lib\site-packages\qtawesome\__init__.py", line 130, in _instance
    _resource['iconic'] = IconicFont(*_BUNDLED_FONTS)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\jlitster\AppData\Local\Programs\Python\Python311\Lib\site-packages\qtawesome\iconic_font.py", line 338, in __init__
    self.load_font(*fargs)
  File "C:\Users\jlitster\AppData\Local\Programs\Python\Python311\Lib\site-packages\qtawesome\iconic_font.py", line 374, in load_font
    directory = self._get_fonts_directory()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\jlitster\AppData\Local\Programs\Python\Python311\Lib\site-packages\qtawesome\iconic_font.py", line 593, in _get_fonts_directory
    fonts_directory = self._install_fonts(fonts_directory)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\jlitster\AppData\Local\Programs\Python\Python311\Lib\site-packages\qtawesome\iconic_font.py", line 623, in _install_fonts
    shutil.copy(src_path, user_fonts_dir)
  File "C:\Users\jlitster\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 419, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "C:\Users\jlitster\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 258, in copyfile
    with open(dst, 'wb') as fdst:
         ^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\jlitster\\AppData\\Local\\Microsoft\\Windows\\Fonts\\codicon.ttf'```
maximus-sci commented 8 months ago

Hello, I'm running Windows 10 and installed miniconda.

I opened the anaconda prompt and used this:

conda create -n biopython -c conda-forge biopython spyder mamba
conda activate biopython
spyder

Which causes the error below and spyder fails to open

fromIccProfile: failed minimal tag size sanity
Traceback (most recent call last):
  File "C:\Users\Max\miniconda3\envs\biopython\Scripts\spyder-script.py", line 10, in <module>
    sys.exit(main())
             ^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\app\start.py", line 257, in main
    mainwindow.main(options, args)
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\app\mainwindow.py", line 1847, in main
    mainwindow = create_window(MainWindow, app, splash, options, args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\app\utils.py", line 289, in create_window
    main.setup()
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\app\mainwindow.py", line 752, in setup
    internal_plugins = find_internal_plugins()
                       ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\app\find_plugins.py", line 40, in find_internal_plugins
    mod = importlib.import_module(entry_point.module_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\importlib\__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 994, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\plugins\pylint\plugin.py", line 22, in <module>
    from spyder.plugins.pylint.confpage import PylintConfigPage
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\plugins\pylint\confpage.py", line 16, in <module>
    from spyder.plugins.pylint.main_widget import (MAX_HISTORY_ENTRIES,
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\plugins\pylint\main_widget.py", line 90, in <module>
    class CategoryItem(QTreeWidgetItem):
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\plugins\pylint\main_widget.py", line 102, in CategoryItem
    'icon': ima.icon("convention")
            ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\spyder\utils\icon_manager.py", line 433, in icon
    qta.load_font('spyder', 'spyder.ttf', 'spyder-charmap.json',
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\qtawesome\__init__.py", line 280, in load_font
    return _instance().load_font(prefix, ttf_filename, charmap_filename, directory)
           ^^^^^^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\qtawesome\__init__.py", line 130, in _instance
    _resource['iconic'] = IconicFont(*_BUNDLED_FONTS)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\qtawesome\iconic_font.py", line 338, in __init__
    self.load_font(*fargs)
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\qtawesome\iconic_font.py", line 374, in load_font
    directory = self._get_fonts_directory()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\qtawesome\iconic_font.py", line 593, in _get_fonts_directory
    fonts_directory = self._install_fonts(fonts_directory)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\site-packages\qtawesome\iconic_font.py", line 623, in _install_fonts
    shutil.copy(src_path, user_fonts_dir)
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\shutil.py", line 423, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "C:\Users\Max\miniconda3\envs\biopython\Lib\shutil.py", line 262, in copyfile
    with open(dst, 'wb') as fdst:
         ^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\Max\\AppData\\Local\\Microsoft\\Windows\\Fonts\\codicon.ttf'
maximus-sci commented 8 months ago

Hey, just to chime back in. I restarted my system and the problem resolved.

I do still get this error fromIccProfile: failed minimal tag size sanity But spyder does start successfully anyway. Weird

MCBP-UT commented 8 months ago

I had the same issue on a win 11 machine, one environment with python 3.8, spyder 5.4 loaded spyder without error. Two other environments (python 3.9/spyder 5.4, python 3.10/ spyder 5.5 wouldn't load because of the codicon.ttf error. But now they load after a system restart. Then I started the 3.8/5.4 environment again and it wouldn't load. Just reporting this for your information. Restarting as mentioned by @maximus-sci fixes the issue and is an acceptable solution for me.

Thank you for Spyder!

irfanykywz commented 8 months ago

i had same issue in version 1.3.0 always access denied when i uninstall and install lower version 1.2.3 its working on python 3.10 (win10)

Alecampoy commented 8 months ago

I found the same error PermissionError: [Errno 13] Permission denied: 'C:\\Users\\Ale Campoy\\AppData\\Local\\Microsoft\\Windows\\Fonts\\materialdesignicons6-webfont.ttf' when trying to execute spyder from a pip venv (I should not use conda and wanted to have spyder notebook). Solution was to delete files codicon.ttf materialdesignicons5-webfont.ttf and materialdesignicons5-webfont.ttf

caichangjia commented 8 months ago

I had the same issue on a win 11 machine, one environment with python 3.8, spyder 5.4 loaded spyder without error. Two other environments (python 3.9/spyder 5.4, python 3.10/ spyder 5.5 wouldn't load because of the codicon.ttf error. But now they load after a system restart. Then I started the 3.8/5.4 environment again and it wouldn't load. Just reporting this for your information. Restarting as mentioned by @maximus-sci fixes the issue and is an acceptable solution for me.

Thank you for Spyder!

Same issue here. Restarting doesn't help. Looks like I could only open spyder in the first env, the second env it will gives error of permission denied codicon.tff

kmnhan commented 8 months ago

Same as @jlitster-freeus here, but in my case the two installations had the same qtawesome version (1.3.0). However, qtawesome in the one packaged with PyInstaller was installed with pip and the one in the other installation, a conda environment, was installed from anaconda (conda-forge). I reinstalled qtawesome with pip, and the conflict seems to be resolved. Maybe qtawesome 1.3.0 in anaconda has a different charmap from the pip package?

Netzvamp commented 7 months ago

I have the same. I have a application that i compile with pyinstaller. Some Windows 2022 (Version: 21h2) Terminalservers copies it to a local folder, and RDP-Terminalusers run it from there. Sometimes when a user starts the app he gets:

Traceback (most recent call last):
  File "main.py", line 88, in <module>
  File "model\resources.py", line 68, in get_icons
  File "qtawesome\__init__.py", line 234, in icon
  File "qtawesome\__init__.py", line 130, in _instance
  File "qtawesome\iconic_font.py", line 338, in __init__
  File "qtawesome\iconic_font.py", line 374, in load_font
  File "qtawesome\iconic_font.py", line 593, in _get_fonts_directory
  File "qtawesome\iconic_font.py", line 623, in _install_fonts
  File "shutil.py", line 423, in copy
  File "shutil.py", line 262, in copyfile
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\<username>\\AppData\\Local\\Microsoft\\Windows\\Fonts\\codicon.ttf'

When i go to that folder i can't manual delete the file, cause it's blocked by "system". The workaround in that case is to logout and login again, that unblocks the file and the app/qtawesome can replace the font file.

Edit: I also happens with 1.2.3, so it's Independent from the qtawesome version. It has to do something with windows versions/changes.

Fealthas commented 6 months ago

Can confirm that signing in and out of windows fixes the Errno 13 problem. Very strange.

ccordoba12 commented 6 months ago

Hey folks, we'll release a new version soon (1.3.1) to try to fix this problem. Hopefully that will solve it for you.