skip to Main Content

I am trying to following the answer to this question in an attempt to copy to clipboard however all solutions provided in the answer seem to have failed me. On macOS, I have successfully used pyperclip and subprocess.run to copy to clipboard as described in the linked post, however on centOS neither works. I have also tried using Tkinter on macOS however when I run the following simple code:

  from tkinter import Tk
  r = Tk()

I get the following deprecation warning:

DEPRECATION WARNING: The system version of Tk is deprecated and may be removed in a future release. Please don't rely on it. Set TK_SILENCE_DEPRECATION=1 to suppress this warning.

I don’t really want to build my application with deprecated dependencies however seeing that centOS doesn’t support pyperclip or subprocess.run I feel like I have no other options.

Specifically I would like to know if there exists a good solution to my problem, that is, I want to copy to clipboard on centOS and ideally, I want a solution that will work on “most” platforms. Please note that I am using python3. Thanks

3

Answers


  1. You have 2 options:

    1. Ignore the DEPRECATION WARNING:
      See this post Using tkinter with Catalina, how to avoid deprecation warning? helped me a lot.

    2. Upgrade Python:
      See the official documentation IDLE and tkinter with Tcl/Tk on macOS

    Login or Signup to reply.
  2. I can’t answer on the original question, because it is deprecated now, but because it is linking to this question, I will post my solution here (which assumes pyenv is installed):

    I followed the steps of @Karthik R here https://stackoverflow.com/a/73930554/6429967 but this didn’t solve my problem. What I did and worked was based on the following article: https://blog.lanzani.nl/2020/install-tkinter-macos/ which expands @Karthik R’s solution approach

    Solution (Note: change the pyenv version to your version)

    $ brew uninstall tcl-tk
    $ pyenv uninstall 3.10.8
    $ brew install tcl-tk
    $ export PATH="/usr/local/opt/tcl-tk/bin:$PATH"
    $ export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
    $ export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"
    $ export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"
    $ export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I$(brew --prefix tcl-tk)/include' --with-tcltk-libs='-L$(brew --prefix tcl-tk)/lib -ltcl8.6 -ltk8.6'"
    $ 
    $ pyenv install 3.10.8
    $ pyenv global 3.10.8
    
    # Test the installation
    $ python -m tkinter
    

    EDIT: this solution was tried out on an Intel-based iMac with macOS Ventura 13.1 installed.

    Login or Signup to reply.
  3. Answer also found here: DEPRECATION WARNING: The system version of Tk is deprecated, M1 Mac in Vs Code – global Python


    If you have Homebrew installed, you can update tk with:

    brew uninstall tcl-tk --devel
    brew install tcl-tk
    

    Which is the recommended option

    Then you may need to add export PATH="/usr/local/opt/tcl-tk/bin:$PATH" to your .zshrc file:

    If you are using a zsh terminal:

    Zsh tab

    Use:

    echo "# For tkinter 
    export PATH="/usr/local/opt/tcl-tk/bin:$PATH"" >> ~/.zshrc
    

    Or if you are using a bash terminal:

    echo "# For tkinter 
    export PATH="/usr/local/opt/tcl-tk/bin:$PATH"" >> ~/.bashrc
    

    Homebrew

    Reference

    Python’s offical tk upgrade docs

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search