Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Zappa部署打包本地python依赖项_Python_Flask_Python Import_Zappa - Fatal编程技术网

为Zappa部署打包本地python依赖项

为Zappa部署打包本地python依赖项,python,flask,python-import,zappa,Python,Flask,Python Import,Zappa,上下文 我有一个本地文件夹,其中包含多个Python Flask应用程序和一个commons Python包。如您所见,我为每个Flask应用程序创建了一个virtualenv,因为我希望使用Zappa部署到AWS Lambda,并且只希望在到AWS的包zip中包含相关的依赖项 project_folder/ +-- commons/ | +-- __init__.py | +-- setup.py | +-- module1.py +-- application1/ |

上下文

我有一个本地文件夹,其中包含多个Python Flask应用程序和一个commons Python包。如您所见,我为每个Flask应用程序创建了一个virtualenv,因为我希望使用Zappa部署到AWS Lambda,并且只希望在到AWS的包zip中包含相关的依赖项

project_folder/
 +-- commons/
 |   +-- __init__.py
 |   +-- setup.py
 |   +-- module1.py
 +-- application1/
 |   +-- __init__.py
 |   +-- app.py
 |   +-- env/
 +-- application2/
 |   +-- __init__.py
 |   +-- app.py
 |   +-- env/
问题

我无法在Flask应用程序中包含
commons
包。我认为这是必须的,因为它是附属目录,而不是子目录

  • 我希望避免在每个烧瓶应用程序中添加副本
  • 我不想将整个项目创建为一个巨大的包,因为它对于AWS Lambda来说太大了
问题


当我从
project\u文件夹/application1/
内部调用
zappa deploy
时,如何确保包含
commons
包?

解决方案之一是在虚拟环境中安装包(
pip install.
在commons目录中)。Zappa将使用其中安装的所有软件包

当然,这有点麻烦,因为每次修改包时都需要重新安装它。您可以:

  • 创建一个脚本,通过重新安装然后调用
    zappa deploy
    来帮助您
  • 尝试创建您自己的模块,并在zappa_settings.json部分注册它。此模块将由部署/更新过程调用,理论上可以提前重新安装包。然而,这只是我的猜测,这可能是可能的。我从来没有试过那样的事

  • 谢谢你的快速回答!我担心,仅仅使用
    pip install.
    ,一次也不能让它工作。commons的安装运行良好,但是当我运行cd application1并运行python-c“import commons”时,它将不起作用。因为导入不在路径中。只需在代码中附加路径就可以在本地工作,但对Zappa包不起作用。@TomHemmes这可能是因为您没有有效的目录结构,而pip实际上找不到任何要安装的包。尝试将module1.py放在commons/mypackage/module1.py中。然后再次尝试安装,并通过运行
    pip list
    检查是否安装了
    mypackage
    。如果你不这样做,我会尝试通过添加setup.py的示例来更改答案。这完全是愚蠢的,因为我使用的是
    find\u packages()
    我根本没有理解这个问题。非常感谢,这使我能够部署。您的第一个选项解决了问题,我将测试第二个选项,并报告哪一个更好!