PandasGUI icon indicating copy to clipboard operation
PandasGUI copied to clipboard

No APPDATA environment variable in Linux: expected str, bytes or os.PathLike object, not NoneType

Open hfs opened this issue 1 year ago • 10 comments

Trying to run

from pandasgui import show

on Ubuntu Linux fails with:

Traceback (most recent call last):
  File "/home/hfs/usr/bin/pandasgui-file", line 7, in <module>
    from pandasgui import show
  File "/opt/mambaforge/envs/pandasgui/lib/python3.11/site-packages/pandasgui/__init__.py", line 15, in <module>
    from pandasgui.gui import show
  File "/opt/mambaforge/envs/pandasgui/lib/python3.11/site-packages/pandasgui/gui.py", line 13, in <module>
    from pandasgui.constants import PANDASGUI_ICON_PATH
  File "/opt/mambaforge/envs/pandasgui/lib/python3.11/site-packages/pandasgui/constants.py", line 15, in <module>
    SHORTCUT_PATH = os.path.join(os.getenv('APPDATA'), 'Microsoft/Windows/Start Menu/Programs/PandasGUI.lnk', )
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen posixpath>", line 76, in join

APPDATA is a Windows-specific environment variable.

As a workaround one can set the variable to a dummy value:

export APPDATA=

In general it would be nice if “adding to the start menu” was wrapped in some operating system detection, because it only makes sense on Windows anyway.

Environment OS: Ubuntu 22.04.2 LTS Python: Python 3.11.0

Package versions

ipython @ file:///home/conda/feedstock_root/build_artifacts/ipython_1677617093347/work
jupyter_core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_core_1675109859355/work
pandasgui==0.2.14
plotly @ file:///home/conda/feedstock_root/build_artifacts/plotly_1677271849976/work
PyQt5==5.15.7
PyQt5-sip==12.11.0
PyQtWebEngine==5.15.6
PyQtWebEngine-Qt5==5.15.2

hfs avatar Mar 03 '23 09:03 hfs

I'm having a similar issue on my mac?

TypeError Traceback (most recent call last) Input In [2], in <cell line: 2>() ----> 2 from pandasgui import show

File ~/opt/anaconda3/envs/streamlit/lib/python3.8/site-packages/pandasgui/init.py:15, in 12 logger.addHandler(sh) 14 # Imports ---> 15 from pandasgui.gui import show 17 all = ["show", "version"]

File ~/opt/anaconda3/envs/streamlit/lib/python3.8/site-packages/pandasgui/gui.py:13, in 10 from PyQt5.QtCore import Qt 12 import pandasgui ---> 13 from pandasgui.constants import PANDASGUI_ICON_PATH 14 from pandasgui.store import PandasGuiStore, SettingsSchema 15 from pandasgui.utility import as_dict, fix_ipython, get_figure_type, resize_widget

File ~/opt/anaconda3/envs/streamlit/lib/python3.8/site-packages/pandasgui/constants.py:15, in 12 PANDASGUI_ICON_PATH = pkg_resources.resource_filename(name, "resources/images/icon.png") 13 PANDASGUI_ICON_PATH_ICO = pkg_resources.resource_filename(name, "resources/images/icon.ico") ---> 15 SHORTCUT_PATH = os.path.join(os.getenv('APPDATA'), 'Microsoft/Windows/Start Menu/Programs/PandasGUI.lnk', ) 16 PY_INTERPRETTER_PATH = os.path.join(os.path.dirname(sys.executable), 'python.exe') 17 PYW_INTERPRETTER_PATH = os.path.join(os.path.dirname(sys.executable), 'pythonw.exe')

File ~/opt/anaconda3/envs/streamlit/lib/python3.8/posixpath.py:76, in join(a, *p) 71 def join(a, *p): 72 """Join two or more pathname components, inserting '/' as needed. 73 If any component is an absolute path, all previous path components 74 will be discarded. An empty last part will result in a path that 75 ends with a separator.""" ---> 76 a = os.fspath(a) 77 sep = _get_sep(a) 78 path = a

TypeError: expected str, bytes or os.PathLike object, not NoneType

bwhitby avatar Mar 03 '23 21:03 bwhitby

Where to execute "export APPDATA=" ? I tried on Linux Terminal, but the error still persist

kusumy avatar Mar 07 '23 18:03 kusumy

I just commended out the line #SHORTCUT_PATH = os.path.join(os.getenv('APPDATA'), 'Microsoft/Windows/Start Menu/Programs/PandasGUI.lnk', ) and that worked for me

CarelKattriggerise avatar Mar 08 '23 12:03 CarelKattriggerise

I just commended out the line #SHORTCUT_PATH = os.path.join(os.getenv('APPDATA'), 'Microsoft/Windows/Start Menu/Programs/PandasGUI.lnk', ) and that worked for me

Where did you comment out the line?

aarnipalli avatar Mar 08 '23 16:03 aarnipalli

I'm having a similar issue on my mac?

TypeError Traceback (most recent call last) Input In [2], in <cell line: 2>() ----> 2 from pandasgui import show

File ~/opt/anaconda3/envs/streamlit/lib/python3.8/site-packages/pandasgui/init.py:15, in 12 logger.addHandler(sh) 14 # Imports ---> 15 from pandasgui.gui import show 17 all = ["show", "version"]

File ~/opt/anaconda3/envs/streamlit/lib/python3.8/site-packages/pandasgui/gui.py:13, in 10 from PyQt5.QtCore import Qt 12 import pandasgui ---> 13 from pandasgui.constants import PANDASGUI_ICON_PATH 14 from pandasgui.store import PandasGuiStore, SettingsSchema 15 from pandasgui.utility import as_dict, fix_ipython, get_figure_type, resize_widget

File ~/opt/anaconda3/envs/streamlit/lib/python3.8/site-packages/pandasgui/constants.py:15, in 12 PANDASGUI_ICON_PATH = pkg_resources.resource_filename(name, "resources/images/icon.png") 13 PANDASGUI_ICON_PATH_ICO = pkg_resources.resource_filename(name, "resources/images/icon.ico") ---> 15 SHORTCUT_PATH = os.path.join(os.getenv('APPDATA'), 'Microsoft/Windows/Start Menu/Programs/PandasGUI.lnk', ) 16 PY_INTERPRETTER_PATH = os.path.join(os.path.dirname(sys.executable), 'python.exe') 17 PYW_INTERPRETTER_PATH = os.path.join(os.path.dirname(sys.executable), 'pythonw.exe')

File ~/opt/anaconda3/envs/streamlit/lib/python3.8/posixpath.py:76, in join(a, *p) 71 def join(a, *p): 72 """Join two or more pathname components, inserting '/' as needed. 73 If any component is an absolute path, all previous path components 74 will be discarded. An empty last part will result in a path that 75 ends with a separator.""" ---> 76 a = os.fspath(a) 77 sep = _get_sep(a) 78 path = a

TypeError: expected str, bytes or os.PathLike object, not NoneType

having the same issue on my mac; can not find a solution

aarnipalli avatar Mar 08 '23 16:03 aarnipalli

I got same error on my mac.

minikiller avatar Mar 10 '23 00:03 minikiller

The PyPI version may be old. Trying pip install git+https://github.com/adamerose/pandasgui.git solved the issue for me.

TsaiTung-Chen avatar Mar 11 '23 10:03 TsaiTung-Chen

Where to execute "export APPDATA=" ? I tried on Linux Terminal, but the error still persist

I put the following in my script:

import os os.environ['APPDATA'] = ""

500apes avatar Mar 20 '23 17:03 500apes

Same issue for me on a debian based distribution. If possible I think it could be beneficial for the package to tackle this issue. Some possible new users might become disheartend by the error and dish this great package without ever using it.

Installing directly from git is sadly not always possible in an enterprise setting. I circumvented the problem by adding the dummy export to my .bashrc file, which is execute on the start of a new terminal. If you want to follow along:

  1. Use a text editor to open your .bashrc file (e.g., nano, vim, whatever)
nano ~/.bashrc
  1. Add export statement for the dummy enviroment variable to the end of the file
export APPDATA=
  1. Save and exit the text editor

This fixed the error. That being said, it does not work well in devcontainer at all, my next barrier would be

ImportError: this platform is not supported: ('failed to acquire X connection: Bad display name ""', DisplayNameError(''))

Try one of the following resolutions:

 * Please make sure that you have an X server running, and that the DISPLAY environment variable is set correctly

Buedenbender avatar May 19 '23 12:05 Buedenbender

To solve the issue I did :

git clone https://github.com/adamerose/PandasGUI.git
cd PandasGUI
nano pandasgui/constants.py

Commented the 3 last line :

#SHORTCUT_PATH = os.path.join(os.getenv('APPDATA'), 'Microsoft/Windows/Start Menu/Programs/PandasGUI.lnk', )
#PY_INTERPRETTER_PATH = os.path.join(os.path.dirname(sys.executable), 'python.exe')
#PYW_INTERPRETTER_PATH = os.path.join(os.path.dirname(sys.executable), 'pythonw.exe')

saved the file and :

pip install .

And it's now working (Ubuntu 22.04, python3.10)

jgcb00 avatar May 19 '23 14:05 jgcb00