randy3k / radian

A 21 century R console
MIT License
1.96k stars 73 forks source link

Radian 0.6.9 fails to run on python 3.12.1 #455

Open alex-gable opened 6 months ago

alex-gable commented 6 months ago

Environment

It looks like this is coming from a package dependency rchitect.

I know environments/versions can be finicky, but I tried to make this as clear-cut as possible (at least in my set up)

I use pyenv (to manage python versions) as well as pipx (to manage python CLI tools). So, in my .zshrc I first set PIPX_DEFAULT_PYTHON = "$HOME/.pyenv/shims/python". I then source ~/.zshrc to ensure my terminal environment is up-to-date.

Reproducing

From there I run pyenv global 3.12. after this, python --version returns 3.12.1. After this I install radian with pipx and attempt to run radian

radian installed with 3.12

> pipx install radian
installed package radian 0.6.9, installed using Python 3.12.1
These apps are now globally available
  - radian
done! ✨ 🌟 ✨
> radian
Traceback (most recent call last):
  File "/Users/gable/.local/bin/radian", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/gable/.local/pipx/venvs/radian/lib/python3.12/site-packages/radian/app.py", line 11, in main
    from rchitect.utils import Rhome, rversion
  File "/Users/gable/.local/pipx/venvs/radian/lib/python3.12/site-packages/rchitect/__init__.py", line 1, in <module>
    from .setup import init, loop
  File "/Users/gable/.local/pipx/venvs/radian/lib/python3.12/site-packages/rchitect/setup.py", line 7, in <module>
    from .utils import Rhome, ensure_path, system2utf8
  File "/Users/gable/.local/pipx/venvs/radian/lib/python3.12/site-packages/rchitect/utils.py", line 11, in <module>
    from pkg_resources import parse_version
ModuleNotFoundError: No module named 'pkg_resources'

clearing the installed version of radian

then we need to make sure we clear the currently installed version of radian. to uninstall:

> pipx uninstall radian
uninstalled radian! ✨ 🌟 ✨

radian installed with 3.11

then we need to tell pyenv to use version 3.11 as the default:

pyenv global 3.11

I then exit the terminal and open a clean, new session. In that new terminal, I install radian again and confirm it was built with 3.11

> pipx install radian
installed package radian 0.6.9, installed using Python 3.11.7
These apps are now globally available
  - radian
done! ✨ 🌟 ✨

This log confirms radian was built with python version 3.11(.7). I then run radian.

> radian
R version 4.2.2 (2022-10-31) -- "Innocent and Trusting"
Platform: aarch64-apple-darwin20 (64-bit)

r$>

radian is now running as expected. please let me know if I can provide additional, clarifying information to help reproduce!

reumle commented 5 months ago

Hi Alex, thanks for your issue (and your workaround! ), I get a very similar error under windows 10 and python 12.1. ModuleNotFoundError: No module named 'pkg_resources'

Some log messages below.

workaround for windows 10

log messages under python 3.12

C:\Users\elm>pip install -U radian
Collecting radian
  Using cached radian-0.6.9-py3-none-any.whl
Collecting rchitect<0.5.0,>=0.4.3 (from radian)
  Using cached rchitect-0.4.4.tar.gz (32 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting prompt-toolkit<3.1,>=3.0.41 (from radian)
  Obtaining dependency information for prompt-toolkit<3.1,>=3.0.41 from https://files.pythonhosted.org/packages/ee/fd/ca7bf3869e7caa7a037e23078539467b433a4e01eebd93f77180ab927766/prompt_toolkit-3.0.43-py3-none-any.whl.metadata
  Using cached prompt_toolkit-3.0.43-py3-none-any.whl.metadata (6.5 kB)
Collecting pygments>=2.5.0 (from radian)
  Obtaining dependency information for pygments>=2.5.0 from https://files.pythonhosted.org/packages/97/9c/372fef8377a6e340b1704768d20daaded98bf13282b5327beb2e2fe2c7ef/pygments-2.17.2-py3-none-any.whl.metadata
  Using cached pygments-2.17.2-py3-none-any.whl.metadata (2.6 kB)
Collecting wcwidth (from prompt-toolkit<3.1,>=3.0.41->radian)
  Obtaining dependency information for wcwidth from https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl.metadata
  Using cached wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)
Collecting cffi>=1.10.0 (from rchitect<0.5.0,>=0.4.3->radian)
  Obtaining dependency information for cffi>=1.10.0 from https://files.pythonhosted.org/packages/e9/63/e285470a4880a4f36edabe4810057bd4b562c6ddcc165eacf9c3c7210b40/cffi-1.16.0-cp312-cp312-win_amd64.whl.metadata
  Using cached cffi-1.16.0-cp312-cp312-win_amd64.whl.metadata (1.5 kB)
Collecting six>=1.9.0 (from rchitect<0.5.0,>=0.4.3->radian)
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting pycparser (from cffi>=1.10.0->rchitect<0.5.0,>=0.4.3->radian)
  Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Using cached prompt_toolkit-3.0.43-py3-none-any.whl (386 kB)
Using cached pygments-2.17.2-py3-none-any.whl (1.2 MB)
Using cached cffi-1.16.0-cp312-cp312-win_amd64.whl (181 kB)
Using cached wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)
Building wheels for collected packages: rchitect
  Building wheel for rchitect (pyproject.toml) ... done
  Created wheel for rchitect: filename=rchitect-0.4.4-cp312-cp312-win_amd64.whl size=63329 sha256=ead405ab6701d91bea5a6b3242ab3fb6d13c4f9b72ae98ab333a1e3dbdec7f56
  Stored in directory: c:\users\elm\appdata\local\pip\cache\wheels\69\e8\4b\aac5fc867ffc47a1f25355e17ba24eec4fd291dd4cf385f64b
Successfully built rchitect
Installing collected packages: wcwidth, six, pygments, pycparser, prompt-toolkit, cffi, rchitect, radian
Successfully installed cffi-1.16.0 prompt-toolkit-3.0.43 pycparser-2.21 pygments-2.17.2 radian-0.6.9 rchitect-0.4.4 six-1.16.0 wcwidth-0.2.13

[notice] A new release of pip is available: 23.2.1 -> 23.3.2
[notice] To update, run: python.exe -m pip install --upgrade pip

C:\Users\elm>D:\desktop\Python312\Scripts\radian.exe
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "D:\desktop\Python312\Scripts\radian.exe\__main__.py", line 7, in <module>
  File "D:\desktop\Python312\Lib\site-packages\radian\app.py", line 11, in main
    from rchitect.utils import Rhome, rversion
  File "D:\desktop\Python312\Lib\site-packages\rchitect\__init__.py", line 1, in <module>
    from .setup import init, loop
  File "D:\desktop\Python312\Lib\site-packages\rchitect\setup.py", line 7, in <module>
    from .utils import Rhome, ensure_path, system2utf8
  File "D:\desktop\Python312\Lib\site-packages\rchitect\utils.py", line 11, in <module>
    from pkg_resources import parse_version
ModuleNotFoundError: No module named 'pkg_resources'
randy3k commented 5 months ago

Please upgrade rchitect to v0.4.4.

10b14224cc commented 5 months ago

Please upgrade rchitect to v0.4.4.

I have rchitect 0.4.4, same error

Please specify in the README that python must be < 3.12

randy3k commented 5 months ago

Oh, python 3.12 no longer ships with pkg_resources by default. Please install it manually.

alex-gable commented 5 months ago

@randy3k should it be added as a dependency then so it installs by default?

alex-gable commented 5 months ago

Okay so, checking the notes for the changes that removed pkg_resources from python 3.12 it appears for those using pipx like myself the command that needs to now be run (until setuptools is added as a dependency) is:

pipx install radian --preinstall setuptools

for other users installing radian into a venv they recommend running pip install setuptools ahead of installing an application like radian.