小编Wil*_*man的帖子

运行 AWS sam local invoke 时 Python 未找到模块

我刚刚开始使用 SAM 使用 AWS 无服务器并遇到以下问题:

SAM invoke 似乎找不到我的 lambda 处理程序正在导入的 python 模块,但我可以以其他方式导入该模块。

结构我的项目是:

根目录/

  • 我的模块名称/
    • 我的模块.py
  • aws/
    • 山姆/
      • 模板.yaml
      • 打包的.yaml
      • myawsservice/
        • 应用程序
      • 测试/
        • 测试事件.json

我在 python3.6 虚拟环境中工作,我已经使用安装工具安装了我的 python 包(mymodulename):

python setup.py develop
Run Code Online (Sandbox Code Playgroud)

因此,如果我在虚拟环境中冻结 pip,我会看到:

Pillow==6.0.0
PyPDF2==1.26.0
reportlab==3.5.20
mymodulename==0.5.0
Run Code Online (Sandbox Code Playgroud)

另外如果我去:

cd root-dir/aws/sam/
python

>>> import mymodulename
Run Code Online (Sandbox Code Playgroud)

这成功了。所以它在python路径上。

但是当我在本地调用 sam 时,即:

sam local invoke MyAWSServiceFunction --event ../sam/test/test_event.json
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

2019-05-02 09:19:17 Found credentials in shared credentials file: ~/.aws/credentials
2019-05-02 09:19:18 Invoking app.lambda_handler (python3.6)

Fetching lambci/lambda:python3.6 Docker container image......
2019-05-02 …
Run Code Online (Sandbox Code Playgroud)

python-3.x aws-lambda aws-serverless

11
推荐指数
1
解决办法
4372
查看次数

Python dir 内置命令不一致

我想以编程方式检查 print 是否是内置的 Python 函数。

dir(__builtins__)从 Python 命令行查询时使用 Python 3.4.x我得到了我正在寻找的内容:

['ArithmeticError', 'AssertionError', ..... , 'pow', 'print' ... ]
Run Code Online (Sandbox Code Playgroud)

但是当在 .py 文件中使用它时:

import sys

def foo:
   print(dir(__builtins__))
Run Code Online (Sandbox Code Playgroud)

调用返回:

 ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__',
 '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
 '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__',
 '__len__', '__lt__', '__ne__', '__new__', '__reduce__',
 '__reduce_ex__', '__repr__', '__setattr__', '__setitem__',
 '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy',
 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault',
 'update', 'values']
Run Code Online (Sandbox Code Playgroud)

__builtins__在任何时候都没有重新定义。

python python-3.x

3
推荐指数
1
解决办法
1218
查看次数

具有自定义签名的函数上的 Golang 错误组

比如说,我有一个函数,func foo(x) error { if x == y ... return err}我想在多个 go 例程中执行并聚合错误(最好使用错误组,如下面的常见示例),但不确定这是否可能?

   import "golang.org/x/sync/errgroup"

   var g errgroup.Group

   g.Go(func() error {
      resp, err := http.Get(url)
      if err == nil {
         resp.Body.Close()
      }
      return err
   })
Run Code Online (Sandbox Code Playgroud)

go goroutine

3
推荐指数
1
解决办法
4761
查看次数

Qt 安装程序框架控制器功能未被调用

我想使用控制器函数修改我的 QtIFW(3.0) 安装程序的流程,这似乎很简单,但是我似乎找不到一个很好的例子来说明函数/脚本应该驻留在何处以及如何制作安装程序意识到这一点。

我尝试过但没有成功的事情:

  • 将控制器功能放入我的组件脚本中
  • 使用我的包根目录中的函数创建controller.qs文件
  • 在我的 package.xml 配置中包含controller.qs脚本文件

我的控制器脚本(controller.qs)目前只是样板:

function Controller() {
    console.log("Controller()");
}
Run Code Online (Sandbox Code Playgroud)

在安装程序运行时,安装程​​序按预期执行,但控制器功能从未被调用。

qt qt5 qt-installer

2
推荐指数
1
解决办法
745
查看次数

使用golang pgxpool的Postgres表批量更新未反映在数据库中

我需要使用新转换的 ID(作为“记录”传入)更新一个相当大的 psql 表。我在下面创建了这个函数来利用 pgxpool 的连接池和请求批处理,如果我使用不同的客户端应用这些事务,它们会更新数据库,而且如果我查看打印出来的结果,它们表明每次 1 行受到影响,但是当我从数据库中检索这些行,它们保持不变。我是否以某种方式错误地使用了批处理?

import (
    ...
    "github.com/jackc/pgconn"
    "github.com/jackc/pgx/v4"
    "github.com/jackc/pgx/v4/pgxpool"

    log "github.com/sirupsen/logrus"
)

func SetNewSubscriptionValuesBatch(dsn string, records map[string]string) error {
    
    var db *pgxpool.Pool

    db, err := pgxpool.Connect(context.Background(), dsn)
    defer db.Close()
    if err != nil {
        panic(err)
    }
    
    tx, err := db.Begin(context.Background())
    if err != nil {
        panic(err)
    }

    b := &pgx.Batch{}

    for id, subID := range records {

    sqlStatement := `
UPDATE event
SET subscription_id_2 = $2
WHERE id = $1;`
        b.Queue(sqlStatement, id, subID)
    }
    
    batchResults …
Run Code Online (Sandbox Code Playgroud)

postgresql go pgx

1
推荐指数
1
解决办法
8051
查看次数

当类中定义了结构体时,如何初始化结构体成员?

使用 c# 我想在一个结构中设置变量,该结构是类的成员,从该类中。对于 c# 来说还很陌生。帮助表示赞赏。

class myclass
{
   public struct mystruct
   {
       public int something;
   }

   public void init() 
   {
      mystruct.something = 20; // <-- this is an error
   }

   static void Main(string[] args)
   {
       myclass c = new myclass();
       c.init();          
   }
}
Run Code Online (Sandbox Code Playgroud)

错误:“非静态字段、方法或属性 myclass.mystruct.something 需要对象引用”

c#

0
推荐指数
1
解决办法
4714
查看次数