Search code examples
pythonmacosvisual-studio-codehomebrewyt-dlp

How do I get homebrew installed packages to be accepted by VSCode?


I have a M1 Macbook Air, and am trying to use yt-dlp in a program. I did brew install yt-dlp and it installed successfully, but when I used import yt_dlp in the python program, it returned an error stating ModuleNotFoundError: No module named 'yt_dlp' I tired a lot of things, but my python knowledge is very minimal, so I don't truely know how to make it work.

Every time I try to use python3 -m pip install yt-dlp, I get this


× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a Python library that isn't in Homebrew,
    use a virtual environment:
    
    python3 -m venv path/to/venv
    source path/to/venv/bin/activate
    python3 -m pip install xyz
    
    If you wish to install a Python application that isn't in Homebrew,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. You can install pipx with
    
    brew install pipx
    
    You may restore the old behavior of pip by passing
    the '--break-system-packages' flag to pip, or by adding
    'break-system-packages = true' to your pip.conf file. The latter
    will permanently disable this error.
    
    If you disable this error, we STRONGLY recommend that you additionally
    pass the '--user' flag to pip, or set 'user = true' in your pip.conf
    file. Failure to do this can result in a broken Homebrew installation.
    
    Read more about this behavior here: <https://peps.python.org/pep-0668/>

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Solution

  • Your problem occurs due to your python envoironment is managed by your system (MacOs) and it prevent you to install packages to ensure you do not break your system. So it wont allow you for your own good. It is not about vscode.

    There are few solutions to that

    1- is to use a envoriment as it is suggested you in message which is very simple and also improves your python capabilities.

    2- install another python interpreter. you can learn your system python with using terminal command

    python --version
    

    Lets say you have python 3.10 as your main system python. You can then install python3.11 to not to mix them two.

    Then you can

    python3.11 -m pip install yt-dlp
    

    instead og your original commands python3 i have written python3.11 then you can use command+shift+p on vs code and type select python interpreter and select 3.11 to make vscode run your py files with your newly installed python not your system one.

    3- this is the works idea and can break few things inside system but it is also solves what you experince.

    python3 -m pip install yt-dlp --break-system-packages
    

    Again there is nothing wrong with your vscode or system it is a safety measure and you can break it with this. Using steps 1 and 2 solves this problems safely.