簡體   English   中英

NameError:使用python3編譯時未定義名稱“ unicode”

[英]NameError: name 'unicode' is not defined when compile with python3

我正在嘗試使用python3編譯caffe。 編譯后,當我嘗試導入Caffe時出現以下錯誤

In [1]: import caffe
Failed to include caffe_pb2, things might go wrong!
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-1cca3aa1f8c5> in <module>()
----> 1 import caffe

/library_install_dir/caffe/python/caffe/__init__.py in <module>()
      1 from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver
      2 from ._caffe import set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list
----> 3 from .proto.caffe_pb2 import TRAIN, TEST
      4 from .classifier import Classifier
      5 from .detector import Detector

/library_install_dir/caffe/python/caffe/proto/caffe_pb2.py in <module>()
    975       name='type', full_name='caffe.FillerParameter.type', index=0,
    976       number=1, type=9, cpp_type=9, label=1,
--> 977       has_default_value=True, default_value=unicode("constant", "utf-8"),
    978       message_type=None, enum_type=None, containing_type=None,
    979       is_extension=False, extension_scope=None,

NameError: name 'unicode' is not defined
  • 問題是Python 3將unicode類型重命名為str,舊的str類型已被字節替換。

我試圖修改proto / caffe_pb2,但無法正常工作。

任何與咖啡有類似問題的人。 我的裸機上有一個運行中的python3支持的caffe,現在我正嘗試對其進行docker化。

提前致謝。

我有同樣的問題。 unicode適用於Python2。 使用make pycaffe命令后,您可以檢查/opt/caffe-1.0/python/caffe/proto/caffe_pb2.py文件,如果文件中有任何unicode ,問題仍然存在。 您可以刪除caffe_pb2.py並再次運行make pycaffe

解決方案是安裝適當版本的protocprotobuf

A)安裝協議> = 2.6.1

(協議== 2.5.0無法正常工作)

https://cuongba.com/protocol-buffers-and-rabbitmq-on-ubuntu-14-04-part-1

wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
tar -xzvf protobuf-2.6.1.tar.gz
cd protobuf-2.6.1
sudo ./configure
make
make check
sudo make install
sudo ldconfig
protoc --version

B)安裝protobuf> = 3.4.0

pip3 install protobuf>=3.4.0

在Python 3中,Str默認為Unicode,因此,在977行中,請將unicode函數替換為str函數

--> 977       has_default_value=True, default_value=Str("constant", "utf-8"),  ## Replace with Str

希望這可以幫助!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM