IBM Cloud Functions - "Invalid virtualenv. Zip file does not include activate_this.py"

510 views Asked by At

I want to deploy a python script with a virtual environment (I need a library which is not in the runtime provided by IBM Cloud Functions) to IBM Cloud Functions. I want to do this with simple zipping so I followed the documentation: Packaging Python code with a local virtual environment in a compressed file in the link below: https://cloud.ibm.com/docs/openwhisk?topic=openwhisk-prep

I have python 3.7 installed and the virtualenv also uses that. The virtualenv is named "virtualenv" as required, however I still receive the error when I try to invoke the action: Results:

{
  "error": "The action failed to generate or locate a binary. See logs for details."
}
Logs:
[
  "2021-05-20T09:27:03.627094Z    stderr: Invalid virtualenv. Zip file does not include activate_this.py",
  "2021-05-20T09:27:03.627Z       stderr: The action did not initialize or run as expected. Log data might be missing."
]

I checked the virtualenv directory and I have "activate_this.py" in the Scripts folder.

What am I missing? The only difference between the steps I take and the documentation is that I have a windows computer, so the activation of the environment went like virtualenv\Scripts\activate, not through bin, and I zipped the script and the virtualenv via windows GUI.

Is it possible that Cloud Functions tries to find the file in a "bin" folder instead of a "Scripts"? If so, what can I do?

Thanks

1

There are 1 answers

3
user6062970 On BEST ANSWER

This is a bug in handling windows packaged venv, as you noted. It is fixed in this fork https://github.com/nimbella-corp/openwhisk-runtime-python/commit/2eb3422cb2dca291cff47ed3239de8512170a1be you can apply and build your own container image as a workaround.