googleapis / python-aiplatform

A Python SDK for Vertex AI, a fully managed, end-to-end platform for data science and machine learning.
Apache License 2.0
589 stars 318 forks source link

vertexai placeholder library breaks existing python site packages #2393

Closed Zahlii closed 11 months ago

Zahlii commented 11 months ago

The init.py file somehow gets copied to site packages root when pip installing. This means every other package suddenly cannot be imported anymore.

More details in https://github.com/iryna-kondr/scikit-llm/issues/48

sasha-gitg commented 11 months ago

This is correct and intentional. The Python package should be installed through google-cloud-aiplatform, not vertexai.

Zahlii commented 11 months ago

I understand this is intentional. However, in my case, another library I used mistakenly added this dependency in their requirements. As there were around 10 Google dependencies in my venv, it took me around an hour to find out what was causing this issue, and that it was not a problem with my setup. Two questions:

Can we at least have a more speaking message, such as „You (or a library you are using) installed vertexai package directly or as a dependency. This package is not supposed to be used, you should use … instead. Installing vertexai breaks all your existing imports until removed“.

Secondly, why would you think breaking every import is a good idea? Why isn’t it enough to break as soon as someone attempts to import it? This to me sounds like a very dangerous approach, opening up a way for other package developers to maliciously include vertexai as a dependency, without the library itself being suspicious, and coming from Google no one is going to assume vertexai library would be this intrusive. It’s not that installing vertexai via this package causes any harm to the user by itself, s/he will notice anyway that it’s the wrong package and adjust accordingly.

sasha-gitg commented 11 months ago

Please provide an environment/notebook/dockerfile/requirements.txt or other mechanism to recreate this issue.