-
Notifications
You must be signed in to change notification settings - Fork 14.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PythonVirtualOperator fails silently when virtualenv is not installed. #40420
Comments
Thanks for opening your first issue here! Be sure to follow the issue template! If you are willing to raise PR to address this issue please do so, no need to wait for approval. |
Marked it as good first issue for someone to handle. |
But we do check airflow/airflow/operators/python.py Lines 699 to 700 in 5f2da71
|
I think @thisiswhereitype to check why it did not work in his case. |
Thanks, the reason is that the A module import would closely match what happens later. (.venv_airflow) $ python -c 'import importlib.util; importlib.util.find_spec("virtualenv")'
(.venv_airflow) $ which virtualenv
/usr/bin/virtualenv
(.venv_airflow) $ pip list | grep env
<no output>
(.venv_airflow) $ |
Feel free to fix it, otherwise it will have to wait for someone else to pick it up. |
Hey @potiuk, could I take on this issue. If I am correct, I should just remove the previous checks defined in the function |
What do YOU think is better? |
Removing the previous checks defined in the function |
Not sure if I got it - but do what you think is best and let's discuss it. |
Hi @pateash , |
Looks like the PR went stale |
Wopuld you like to take it over @thisiswhereitype ? Is this what the comment is about? Feel free to do it if you think it's a good idea. We have no problems with even similar people working in parallel on similar PRs - pretty much all the people contributing here are volunteers and they have day jobs, famiilies and hobbies, so they might or might not complete what they initially thought they will be able to do. Usually then someone who is eager to work on it, can take it over, and we can assign it to that person. Shall I assign it to you @thisiswhereitype ? |
@potiuk please do, see the PR |
I commented there. You need way more to implement it. |
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: #40420
…he#43568) The PythonVirtualenvOperator has been using virtualenv in order to support Python 2.7 and pre Python 3.5, however we do not need those any more - and we can use built-in venv instead. Fixes: apache#40420
Apache Airflow version
2.9.2
If "Other Airflow 2 version" selected, which one?
No response
What happened?
When using PythonVirtualOperator the venv is created by airflow as passed in the dag, in a tmp directory a standard
python -m venv /tmp/....
is run. Laterpip install -r ...
is also run.However, when
virtualenv
is not installed the failed command is not properly detected.Later an uncaught
OSError
in subprocess.Popen (https://github.com/apache/airflow/blob/c310159bc2363c12110b11febd5febaab8670210/airflow/utils/process_utils.py#L184)` is raised by the absent.venv/bin/pip
causing the exit logic not to fire and theTempDirectory.__exit__
then deletes the evidence.See: subprocess Exceptions
Additionally
stderr
is not logged.What you think should happen instead?
I see in the project file there is a core-all listing including virtualenv.
Shoudn't
virtualenv
be a dependecy of thepip install apache-airflow
? I haven't used hatchIf it shouldn't I think there should be better error handing to explain the issue.
How to reproduce
Run a PythonVirtualOperator with airflow installed in a venv that has no virtualenv.
Operating System
ws2 ubuntu 2404
Versions of Apache Airflow Providers
No response
Deployment
Virtualenv installation
Deployment details
No response
Anything else?
No response
Are you willing to submit PR?
Code of Conduct
The text was updated successfully, but these errors were encountered: