【问题标题】:Installing AWS CDK on Amazon Linux 2在 Amazon Linux 2 上安装 AWS CDK
【发布时间】:2023-01-30 20:43:06
【问题描述】:

根据here的说明,应该可以在CloudFormation中安装Python开发的CDK包。

我在 eu-west-2 中使用 t2.micro Amazon Linux 2:ami-0dd555eb7eb3b7c82 只是为了完整性。

说明状态运行此:python -m pip install aws-cdk-lib "/usr/bin/python: No module named pip" 失败了,但是用 python3 替换 python 解决了这个问题安装完成并显示以下消息:

Installing collected packages: attrs, typing-extensions, cattrs, six, python-dateutil, jsii, publication, constructs, aws-cdk-lib
Successfully installed attrs-21.4.0 aws-cdk-lib-2.13.0 cattrs-1.10.0 constructs-10.0.69 jsii-1.54.0 publication-0.0.3 python-dateutil-2.8.2 six-1.16.0 typing-extensions-4.1.1

此外,当在 python3 解释器中执行 >>>help('modules') 现在显示 aws_cdk - 因此我假设一切都很好!

说明表明下一步是使用导入运行 python - 所以我创建了这个:

#!/usr/bin/python3

import aws_cdk
print('hello')

但是,运行此返回很多的错误信息。我已经着手查看提到的文件并试图找出我做错了什么,但我已经走到了死胡同。我想知道是否有人有任何想法?

Traceback (most recent call last):
  File "/usr/lib64/python3.7/importlib/resources.py", line 188, in path
    yield Path(reader.resource_path(resource))
  File "/usr/local/lib/python3.7/site-packages/jsii/_runtime.py", line 43, in load
    _kernel.load(assembly.name, assembly.version, os.fspath(assembly_path))
  File "/usr/local/lib/python3.7/site-packages/jsii/_kernel/__init__.py", line 269, in load
    self.provider.load(LoadRequest(name=name, version=version, tarball=tarball))
  File "/usr/local/lib/python3.7/site-packages/jsii/_kernel/providers/process.py", line 338, in load
    return self._process.send(request, LoadResponse)
  File "/usr/local/lib/python3.7/site-packages/jsii/_utils.py", line 24, in wrapped
    stored.append(fgetter(self))
  File "/usr/local/lib/python3.7/site-packages/jsii/_kernel/providers/process.py", line 333, in _process
    process.start()
  File "/usr/local/lib/python3.7/site-packages/jsii/_kernel/providers/process.py", line 259, in start
    env=environ,
  File "/usr/lib64/python3.7/subprocess.py", line 800, in __init__
    restore_signals, start_new_session)
  File "/usr/lib64/python3.7/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'node': 'node'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./l", line 3, in <module>
    import aws_cdk
  File "/usr/local/lib/python3.7/site-packages/aws_cdk/__init__.py", line 1051, in <module>
    from ._jsii import *
  File "/usr/local/lib/python3.7/site-packages/aws_cdk/_jsii/__init__.py", line 11, in <module>
    import constructs._jsii
  File "/usr/local/lib/python3.7/site-packages/constructs/__init__.py", line 41, in <module>
    from ._jsii import *
  File "/usr/local/lib/python3.7/site-packages/constructs/_jsii/__init__.py", line 12, in <module>
    "constructs", "10.0.69", __name__[0:-6], "constructs@10.0.69.jsii.tgz"
  File "/usr/local/lib/python3.7/site-packages/jsii/_runtime.py", line 43, in load
    _kernel.load(assembly.name, assembly.version, os.fspath(assembly_path))
  File "/usr/lib64/python3.7/contextlib.py", line 161, in __exit__
    raise RuntimeError("generator didn't stop after throw()")
RuntimeError: generator didn't stop after throw()
Exception ignored in: <function _NodeProcess.__del__ at 0x7f3fc99ebb90>
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/jsii/_kernel/providers/process.py", line 224, in __del__
    self.stop()
  File "/usr/local/lib/python3.7/site-packages/jsii/_kernel/providers/process.py", line 281, in stop
    if not self._process.stdin.closed:
AttributeError: '_NodeProcess' object has no attribute '_process'

我也有一台运行 Centos 的“家用机器”,并收到非常相似的消息。但是,我继续使用 ec2 实例来使问题更容易复制和记录。谢谢你。

【问题讨论】:

    标签: python python-3.x amazon-web-services amazon-cloudformation aws-cdk


    【解决方案1】:

    谢谢“9769953” - 答案似乎是要使 AWS CDK python 库正常工作,您必须安装节点的依赖项。

    这个article 也有帮助。

    对于文档——这里是在 Amazon Linux 2 和其他类似的 Linux 发行版上为 python 安装 AWS CDK 的方法。

    一种。安装节点版本管理器。

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
    

    b.激活 nvm。

    . ~/.nvm/nvm.sh
    

    C。安装节点。

    nvm install node
    

    d.检查版本(可选)。

    node -v
    npm -v
    

    e.最后是蟒蛇位!

    python3 -m pip install aws-cdk-lib
    

    F。运行 Python 程序。

    #!/usr/bin/python3
    import aws_cdk
    print('hello')
    

    就是这样。

    再次感谢“9769953”和“网络永恒”。

    【讨论】:

      【解决方案2】:

      如链接页面所述,您应该首先安装 AWS CDK,这是通过 npm 完成的。这是node.js 包管理器;后者很可能是错误消息中提到的 'node',因为它是通过 subprocess 运行的外部(可执行)文件。

      所以首先安装nodenpm(它们可能一起出现),然后继续安装 Python AWS CDK。

      【讨论】:

      • 我明白你的意思 - 我读到的是 5 种不同语言有 5 种可能的安装 - 我认为你不必为每种语言安装 CDK 只是为了支持一种语言。
      • 这就是这些东西通常的工作方式:一个(大型)主流包,然后在其之上以各种语言进行接口。其中,更容易维护核心代码。
      猜你喜欢
      • 2022-05-25
      • 2020-01-18
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2022-07-09
      • 2017-10-28
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多