背景
在过去的几天里,我一直在努力部署使用Pillow的Lambda,而我正在使用Python 3.6进行部署.值得注意的是,我正在Windows 10环境中开发它.
第一次尝试
我开始通过执行以下操作将pip安装在我的工作区中严格安装:
pip3 install pillow -t "D:\Work and Projects\...\...\<projectdir>\pillow"
Run Code Online (Sandbox Code Playgroud)
我有其他软件包,并尝试在同一庄园中安装软件包,其中一个特别是praw,我这样做:
pip3 install praw -t "D:\Work and Projects\...\...\<projectdir>\praw"
Run Code Online (Sandbox Code Playgroud)
在将我的项目内容压缩到一起之后,我将我的包上传到Lambda并在第一次测试时收到错误:
无法导入模块'motw_lambda':无法导入名称'_imaging'
然后,我移除了Pillow包,试图查看这个问题源于哪里(Pillow或praw或其他一个包).删除Pillow后,执行成功.然后我在pillow包中删除了包并尝试:
pip3 install pillow -t "D:\Work and Projects\...\...\<projectdir>\PIL"
Run Code Online (Sandbox Code Playgroud)
和
pip3 install pillow -t "D:\Work and Projects\...\...\<projectdir>\Pillow"
Run Code Online (Sandbox Code Playgroud)
但是与包有同样的错误'_imaging'.
进一步尝试
然后我按照这个资源的指示和这个.我也尝试过使用virualenv甚至是lambda-uploader.
奇怪的是,我得到了同样的错误!我在这里都没有选择,感觉我正在做一些愚蠢的事情,或者目前在Lambda-Python3.6上这是不可能的(虽然我无法想象其他人没有在py3.6-中使用过枕头lambda还......)
任何信息,帮助或通用资源将不胜感激!
我正在寻找一种方法来模拟Python导入的符号链接.我希望能够在不复制文件的情况下就地解压缩以下文件夹结构:
root
?? python_lib
? ?? my_utils
? ?? __init__.py
? ?? etc.py
?? app1
?? app2
?? app3
?? lib
? ?? __init__.py
? ?? my_utils.py
?? run.py
Run Code Online (Sandbox Code Playgroud)
app3/run.py 包含这个:
from lib.my_utils import etc
etc.pancakes()
Run Code Online (Sandbox Code Playgroud)
我想要使用etc位于的代码python_lib/my_utils/.有什么我可以放入,app3/lib/my_utils.py以便Python> = 3.1将透明地导入python_lib/my_utils/文件夹(使用相对路径和..),子包也将工作?