Python代码更改未反映在脚本运行中


$ python --version
Python 3.6.8

我写了一个脚本,其中包含一些命令行参数。最初,这些工作没有问题:

arg_parser = argparse.ArgumentParser()
arg_parser.add_argument(
'-log',
'--loglevel',
default = 'info'
)
arg_parser.add_argument(
'-lf',
'--logfile',
default = './logs/populate.log'
)
...
cl_options = arg_parser.parse_args()
...

然后我把"-log";短标志,并添加了另一个标志:

arg_parser = argparse.ArgumentParser()
arg_parser.add_argument(
'-ll',
'--loglevel',
default = 'info'
)
arg_parser.add_argument(
'-lf',
'--logfile',
default = './logs/populate.log'
)
arg_parser.add_argument(
'-d',
'--daemon',
action = 'store_true'
)
...
cl_options = arg_parser.parse_args()
...

当现在运行脚本时,仍然使用初始参数集-"的名称-log";标志是相同的,并且它缺少"-d/-守护进程";运行时的标志:

$ python3 populate.py --daemon
usage: populate.py [-h] [-log LOGLEVEL] [-lf LOGFILE]
populate.py: error: unrecognized arguments: --daemon

我尝试过的东西:

  • 请确保我已签出正确的git分支
  • 删除pycache文件夹
  • 重新启动脚本运行的计算机
  • 对argparse使用reload((选项

如果我查看脚本的内容,我可以看到我所做的更改是存在的,但它们拒绝生效。

我不是Python专家,我还在学习,但我一定做错了什么。有人能给我指正确的方向吗?

谢谢!

编辑:

我已经尽我所能验证了脚本正在使用最新的文件:

远程系统(运行脚本的地方(:

$ pwd
/opt/ise-web-rpt
$ ls populate.py 
populate.py
$ git branch
* develop
main
$ sha256sum populate.py 
2601cbb49f6956611e2ff50a1b1b90ba61c9c0686ed199831d671e682492be4b  populate.py

本地系统(发生开发的地方(:

$ git branch
* develop
main
$ sha256sum populate.py 
2601cbb49f6956611e2ff50a1b1b90ba61c9c0686ed199831d671e682492be4b  populate.py

据我所知,脚本是正确的文件,我在Git的正确分支上。

在pdb中执行此操作时,似乎是由于在populate.py脚本中导入另一个Python文件导致的。

两个文件都以完全相同的方式配置了argparse,所以最初没有问题。当我将新参数添加到populate.py时,导入的第二个文件没有添加此参数,所以它是"未识别的";到导入的Python文件。这也是为什么标志名称似乎没有改变的原因——它是从导入的文件中返回名称,而不是我试图运行的文件。我在第二个文件的args列表中添加了新参数,脚本就可以运行了。

我现在需要弄清楚层次结构是如何为argparse工作的,但这是一个单独的问题。感谢大家的投入。

相关内容

  • 没有找到相关文章

最新更新