-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Conda support #108
base: master
Are you sure you want to change the base?
Conda support #108
Conversation
Ok, the discussion can start. Here's the current status:
To start the discussion, here are a few questions/issues:
|
This is really cool progress! Sorry I haven't been very responsive on this thread. |
zappa/cli.py
Outdated
exclude=self.zappa_settings[self.api_stage].get('exclude', []) | ||
exclude=self.zappa_settings[self.api_stage].get('exclude', []), | ||
exclude_conda_packages = self.zappa_settings[self.api_stage].get('exclude_conda_packages', | ||
['pip','python','readline','sqlite','wheel', 'boto3', 'botocore']) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe openssl and tk (among other things) are included with miniconda as well. You probably won't want them in your lambda function either.
As far as testing goes I'd recommend mocking and building out units vs trying to figure out how to make some AWS deployment for it. Edit: testing packaging/unpackaging locally would probably be a good idea too. |
It might be useful to warn the end user if there are large packages in their conda environment, too. The limits can be found here: http://docs.aws.amazon.com/lambda/latest/dg/limits.html . Note that there's a compressed as well as an uncompressed limitation. |
Tried out the dev branch and did some tinkering. Could not get conda support to work for me. I'm going to stick with elastic beanstalk for now. Definitely, be back in the future when I have more time. |
hello @mathieu1, |
4047089
to
2707025
Compare
Hey everyone. I'm the lead developer on the conda project right now. Just wanted to chime in and say I think this is awesome. I'll try to spend more time with this in the coming days. If there are any specific questions or things you are stuck on, please ask! Tagging @msarahan here too, who's the tech lead of the conda-build project. |
Cool! Hey @kalefranz and @msarahan ! Thanks for stopping by, I would love to have your support on this awesome but neglected PR. Please also feel free to stop by the Slack channel for discussion: https://slack.zappa.io/ |
+1 here. I think the conda support for Zappa is going to be critical for those of us who want to deploy existing applications which rely on scientific computing libraries (numpy, tensorflow et al) which are already running in these environments. It's impossible to move them to a virtuaenv format given conda ships with platform compliant versions of the lower level C libraries that speed up their python wrappers. |
Zappa does support hundreds of those libraries already, however conda support would certainly improve that number. See more here: https://blog.zappa.io/posts/zappa-adds-support-for-manylinux-wheels |
+1 |
+1 for conda support! |
zappa/zappa.py
Outdated
quit() | ||
|
||
if conda_mode: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Except for the precompiled_packages warning, why does this matter if its conda_mode or not?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It changes the way packaging works. In the standard virtualenv mode, zappa takes the site-packages
folder of the virtualenv and possibly replaces some binaries using lambda-packages
. In conda_mode
zappa does a few things:
- Create a temporary copy of the conda environment for the following manipulations
- Remove excluded conda packages (like python itself)
- Move the
site-packages
folder to the root of the conda environment - Zip up this moved
site-packages
along with all other remaining binaries in the conda environment.
zappa/zappa.py
Outdated
if 'VIRTUAL_ENV' in os.environ: | ||
venv = os.environ['VIRTUAL_ENV'] | ||
elif 'CONDA_ENV_PATH' in os.environ: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
envvar is now CONDA_PREFIX
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
may want to check both CONDA_ENV_PATH and CONDA_PREFIX while people have various versions of conda installed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, this is fixed.
+1 from me too. @Miserlou What needs to be done here to merge? Get the coverage to 100%? |
35618b0
to
fd85cca
Compare
+1 for Conda support |
+1 Conda Support |
+1 |
2 similar comments
+1 |
+1 |
Would love to see these merge conflicts resolved... |
+1 for conda support |
1 similar comment
+1 for conda support |
+1 conda support |
+1 for conda support |
+1 conda support please |
+1 conda support |
1 similar comment
+1 conda support |
+1 conda support |
3 similar comments
+1 conda support |
+1 conda support |
+1 conda support |
Please conda support |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems okay to me. +1 for conda support !
+1 |
+1 for conda support |
Using |
+1 for conda support |
+100 conda support |
+1 conda support |
I noticed there are recent comments on this PR. I'm not sure what "conda support" would require from zappa, but I've reopend the related issue here: If anyone is interested enough to rebase the required changes in this PR against the |
This is a reboot of #94 targetting the
dev
branch. Still WIP, discussion can start after some documentation is provided.