小编Ant*_*ten的帖子

控制台脚本执行时出现 ModuleNotFoundError

怎么了

我有一个用 Python 3(Python 3.6.0 解释器)编写的简单 CLI 项目,我可以直接从命令行使用包和模块名称运行它,但在安装时失败setuptools

# success
? python -m myProject.cli --version
0.0.1.dev0
Run Code Online (Sandbox Code Playgroud)
# failure
? mycli --version
Traceback (most recent call last):
  File "/path/myProject/venv/bin/mycli", line 11, in <module>
    load_entry_point('myProject==0.0.1.dev0', 'console_scripts', 'mycli')()
  File "/path/myProject/venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 560, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/path/myProject/venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2648, in load_entry_point
    return ep.load()
  File "/path/myProject/venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2302, in load
    return self.resolve()
  File "/path/myProject/venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2308, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ModuleNotFoundError: No module named 'myProject'
Run Code Online (Sandbox Code Playgroud)

项目设置

该项目具有以下结构: …

setuptools python-3.x

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

使用kops启用Kubernetes PodPresets

我有一个kubernetes集群,其中设置了kops 1.5,然后升级到1.6.2.我正在尝试使用PodPresets.文档声明了以下要求:

  1. 您已启用api类型settings.k8s.io/v1alpha1/podpreset
  2. 您已启用准入控制器PodPreset
  3. 您已定义了pod预设

我看到1.6.x,第一个是照顾(我怎么验证?).我怎么能申请第二个?我可以看到群集中有三个kube-apiserver-*pod(我想它是3个az).我想我可以从kubernetes仪表板编辑他们的yaml配置,并将PodPreset添加到permit-control字符串中.但有没有更好的方法来实现这一目标?

kubernetes kops

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

在子shell或函数内设置'\ textglob'选项时,Bash脚本会引发语法错误

问题

子shell中设置'extglob'选项时,Bash脚本的执行失败并显示以下错误消息:

/tmp/foo.sh: line 7: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env bash
set -euo pipefail
(
    shopt -s extglob
    for f in ?(.)!(|+(.)|vendor); do
        echo "$f"
    done
)
Run Code Online (Sandbox Code Playgroud)

它在函数内以相同的方式失败:

#!/usr/bin/env bash
set -euo pipefail

list_no_vendor () {
    shopt -s extglob
    for f in ?(.)!(|+(.)|vendor); do
        echo "$f"
    done
}

list_no_vendor
Run Code Online (Sandbox Code Playgroud)

调查

在这两种情况下,当在子shell或函数之外全局设置选项时,脚本会成功执行.

令人惊讶的是,在本地设置时,'extglob'选项似乎在子shell和函数中有效启用:

#!/usr/bin/env bash
set -euo pipefail

(
    shopt -s extglob
    echo 'In the subshell:' "$(shopt extglob)"
)

list_no_vendor () {
    shopt …
Run Code Online (Sandbox Code Playgroud)

bash

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

标签 统计

bash ×1

kops ×1

kubernetes ×1

python-3.x ×1

setuptools ×1