Я пытаюсь установить caffe
в среде conda
. Caffe
нужен пакет Google protobuf
. У меня уже было git clone
'd protobuf
, и оно есть в моих каталогах \usr
. Однако когда я пытаюсь установить caffe в среде conda, установленная версия libprotobuf
неправильно конвертирует файл proto
в код c++
.
Рассмотрим следующий код:
syntax = "proto2";
package test1;
message Datum {
optional int32 channels = 1;
}
Когда я пытаюсь перевести его из моей среды base
, все в порядке:
(base) me@balin:~/Projects/caffe$ make clean
(base) me@balin:~/Projects/caffe$ make superclean
Deleting the following generated files:
./temp5.pb.cc
./temp5.pb.h
(base) me@balin:~/Projects/caffe$ protoc --cpp_out=. temp5.proto
(base) me@balin:~/Projects/caffe$ g++ temp5.pb.cc -c
(base) me@balin:~/Projects/caffe$
Однако, когда я пробую то же самое в среде, которую я хочу использовать для caffe
, я получаю такой результат:
(dnn_track5) me@balin:~/Projects/caffe$ make clean
(dnn_track5) me@balin:~/Projects/caffe$ make superclean
Deleting the following generated files:
./temp5.pb.cc
(dnn_track5) me@balin:~/Projects/caffe$ protoc --cpp_out=. temp5.proto
(dnn_track5) me@balin:~/Projects/caffe$ g++ temp5.pb.cc -c
temp5.pb.cc: In member function ‘virtual const char* test1::Datum::_InternalParse(const char*, google::protobuf::internal::ParseContext*)’:
temp5.pb.cc:150:58: error: ‘ReadVarint’ is not a member of ‘google::protobuf::internal’
channels_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
^~~~~~~~~~
temp5.pb.cc:150:58: note: suggested alternative: ‘ReadVarint32’
channels_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
^~~~~~~~~~
ReadVarint32
Все, что я могу сделать, - это заменить каждый файл в подкаталогах ~\anaconda2\envs\dnn_track5
, которые были установлены conda
, файлами, установленными при сборке protobuf
из GitHub
клона. Прав ли я в этом (сомневаюсь).
Как я могу создать среду conda, где я могу использовать caffe
и при этом иметь работающий protobuf
?