未知的命令行标志 'logtostderr

0 投票
2 回答
4097 浏览
提问于 2025-04-18 05:57

我在这个网站上运行一个SIFT程序:https://github.com/sanchom/sjm

一切都很顺利,直到我运行我的程序:

$ python extract_caltech.py --dataset_path=[path_to_your_101_Categories_directory] \
--process_limit [num_processes_to_spawn] --sift_normalization_threshold 2.0 -- sift_discard_unnormalized \
--sift_grid_type FIXED_3X3 --sift_first_level_smoothing 0.66 --sift_fast --sift_multiscale \
--features_directory [path_for_extracted_features]

在输出中,我看到这一行出现了成千上万次:

ERROR: unknown command line flag 'logtostderr'

我查了一些建议的解决方案:

https://code.google.com/p/google-glog/issues/detail?id=17&q=glog%20gflagsBut

我做的事情是在运行程序之前添加了 GLOG_logtostderr=1

GLOG_logtostderr=1 ./my_application

但是对我来说并没有奏效。

据我所知,这个问题和Gflags和Glog之间的链接有关。但我还没有想到解决办法。请帮帮我。谢谢!

2 个回答

1

$GLOG_logtostderr=1 可能没有达到你想要的效果。这里的 $name 是指“用环境变量 name 的值来替换这个”。但是你其实是想定义一个新的变量。可以这样做:

GLOG_logtostderr=1 ./my_application

(也就是说,去掉 $)。

1

我已经解决了我的问题。原因是,如果我没记错的话,macports的glog没有和gflags一起构建,但这个Python脚本设置了--logtostderr。所以只需要在运行这个脚本的时候,把--logtostderr去掉就可以了:

find . -name '*.py' -exec perl -i -p -e 's/--logtostderr//' {} \;

要检查你是否受到影响,可以运行:

ldd libglog.so

然后查看输出中是否有libgflags。

这个解决方案是从这个网站上找到的:

https://code.google.com/p/google-glog/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&groupby=&sort=&id=206

撰写回答