如何在 conda 环境中用克隆的 GitHub 版本替换 libprotobuf 的 conda 包
How can I replace the conda package for libprotobuf with the cloned GitHub version within a conda environment
我正在尝试在 conda
环境中安装 caffe
。 Caffe
需要 Google 的 protobuf
包。我已经 git clone
了 protobuf
并将其放在我的 \usr
目录中。但是,当我尝试在 conda 环境中安装 caffe 时,安装的 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
我能想到的就是将 conda
安装的 ~\anaconda2\envs\dnn_track5
子目录中的每个文件替换为我从 GitHub
克隆。我对此是否正确(我对此表示怀疑)。
如何创建一个可以使用 caffe
并且仍然可以正常工作 protobuf
的 conda 环境?
没有直接的方法使用 conda 直接从 github 存储库安装,所以值得看看为什么你的代码在你的 caffe
环境中不起作用。
截至 this commit(自 2019 年 10 月起)
::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64
和
::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32
当您 conda install caffe
时,它会下载(至少对我而言)libprotobuf-3.11.2
,这是 2019 年 12 月的最新版本,因此下载的版本是 caffe
的依赖项实际上比您在代码中尝试使用的更新。
您现在有几个选择:
请求具有您要使用的 API 的特定版本的 protobuf。 IE。 3.10.0,从 2019 年 10 月 3 日开始:
conda create -n caffe -c conda-forge python=3.7 caffe libprotobuf=3.10.0
创建自定义 conda 频道并在其中放置您自己的 libprotobuf.tar.bz2
- 调整您的代码以使用最新的
libprotobuf
API
我正在尝试在 conda
环境中安装 caffe
。 Caffe
需要 Google 的 protobuf
包。我已经 git clone
了 protobuf
并将其放在我的 \usr
目录中。但是,当我尝试在 conda 环境中安装 caffe 时,安装的 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
我能想到的就是将 conda
安装的 ~\anaconda2\envs\dnn_track5
子目录中的每个文件替换为我从 GitHub
克隆。我对此是否正确(我对此表示怀疑)。
如何创建一个可以使用 caffe
并且仍然可以正常工作 protobuf
的 conda 环境?
没有直接的方法使用 conda 直接从 github 存储库安装,所以值得看看为什么你的代码在你的 caffe
环境中不起作用。
截至 this commit(自 2019 年 10 月起)
::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64
和
::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32
当您 conda install caffe
时,它会下载(至少对我而言)libprotobuf-3.11.2
,这是 2019 年 12 月的最新版本,因此下载的版本是 caffe
的依赖项实际上比您在代码中尝试使用的更新。
您现在有几个选择:
请求具有您要使用的 API 的特定版本的 protobuf。 IE。 3.10.0,从 2019 年 10 月 3 日开始:
conda create -n caffe -c conda-forge python=3.7 caffe libprotobuf=3.10.0
创建自定义 conda 频道并在其中放置您自己的
libprotobuf.tar.bz2
- 调整您的代码以使用最新的
libprotobuf
API