<blockquote>
<p>I can't explain the 50mb+ difference, especially since s3fs < 100kb on PyPi.</p>
</blockquote>
<p>这很简单,可以解释。正如所料,<code>s3fs</code>在AWS库上有<a href="https://github.com/dask/s3fs/blob/main/requirements.txt#L1" rel="nofollow noreferrer">internal dependencies</a>(在本例中为<code>botocore</code>)。好消息是<code>boto3</code>已经包含在AWS lambda中(请参见lambda中提供的<a href="https://gist.github.com/gene1wood/4a052f39490fae00e0c3#file-all_aws_lambda_modules_python3-7-txt" rel="nofollow noreferrer">this link</a>库),因此您可以从压缩依赖项中排除<code>botocore</code>,并将<strong>的总大小保存到~50MB</strong></p>
<p>有关更多信息,请参阅上面的链接。您可以安全地从压缩的工件文件中删除这些库,并且仍然能够在运行Python 3.8的AWS lambda函数上运行代码:</p>
<ul>
<li>博托</li>
<li>博托考</li>
<li>文件</li>
<li>jmespath</li>
<li>皮普</li>
<li>python dateutil(生成<code>dateutil</code>包)</li>
<li>S3传输</li>
<li>设置工具</li>
<li>六(生成<code>six.py</code>)</li>
<li>urllib3(如果需要,也可以删除像<code>chardet</code>这样的捆绑依赖项)</li>
</ul>
<p>您还可以使用bash脚本递归地删除以下不需要的(垃圾)目录:</p>
<ul>
<li><code>__pycache__</code></li>
<li><code>*.dist-info</code>(例如:<em>certifi-2021.5.30.dist-info</em>)</li>
<li><code>tests</code>-只有<em>可能</em>,但我无法确认。如果您确实选择递归地删除所有<code>tests</code>文件夹,请首先检查lambda上是否有任何中断,因为在极少数情况下,这样的包可以在代码中导入</李>
</ul>
<hr/>
<p>执行所有这些操作后,您应该可以轻松地将压缩工件大小节省约60MB。</strong></p>