Проблемы при установке пакета Python от GitHub (google/protobuf)

Примечание: Я только начинаю с человечностью и Python, у меня есть обширный опыт кодирования на других языках под окнами.

Так, я хочу установить этот пакет:
https://github.com/google/protobuf/tree/master/python
Я пытался установить его следующим образом: Я пытался загрузить код в этом репозитории и затем установить его. Таким образом, сначала я загрузил код с помощью SVN:

svn checkout https://github.com/google/protobuf/trunk/python  

Затем я пытался установить его использование:

sudo python setup.py install  

Это дало следующий вывод:

running install
running bdist_egg
running egg_info
creating protobuf.egg-info
writing requirements to protobuf.egg-info/requires.txt
writing protobuf.egg-info/PKG-INFO
writing namespace_packages to protobuf.egg-info/namespace_packages.txt
writing top-level names to protobuf.egg-info/top_level.txt
writing dependency_links to protobuf.egg-info/dependency_links.txt
writing manifest file 'protobuf.egg-info/SOURCES.txt'
reading manifest file 'protobuf.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files found matching 'google/protobuf/internal/*_pb2.py'
warning: no previously-included files found matching 'google/protobuf/internal/*.proto'
warning: no previously-included files matching '*_test.py' found under directory 'google'
warning: no previously-included files matching '*_test.proto' found under directory 'google'
warning: no previously-included files matching 'unittest*_pb2.py' found under directory 'google'
warning: no previously-included files matching '*.dll' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
writing manifest file 'protobuf.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
Generating google/protobuf/descriptor_pb2.py...
Can't find required file: ../src/google/protobuf/descriptor.proto

Ручной контроль моих папок и исходного GitHub подтвердил, что "descriptor.proto" действительно не существовал. Я действительно находил строки 128-129 из setup.py:

# Generate necessary .proto file if it doesn't exist.
generate_proto("../src/google/protobuf/descriptor.proto")

Так, я предполагаю, что этот файл должен был быть создан автоматически, но не был по некоторым причинам. Кто-либо знает почему?

править:
Я также пытался просто использовать:

sudo python setup.py build

Это дало так же:

running build
running build_py
Generating google/protobuf/descriptor_pb2.py...
Can't find required file: ../src/google/protobuf/descriptor.proto

редактирование 2: Я теперь вытянул весь репозиторий и повторно выполнился

sudo python setup.py build

Это дало как вывод:

running build
running build_py
Generating google/protobuf/descriptor_pb2.py...
google/protobuf/descriptor.proto:381:3: Expected "required", "optional", or "repeated".
google/protobuf/descriptor.proto:381:12: Expected field name.
google/protobuf/descriptor.proto:439:3: Expected "required", "optional", or "repeated".
google/protobuf/descriptor.proto:439:12: Expected field name.
google/protobuf/descriptor.proto:537:3: Expected "required", "optional", or "repeated".
google/protobuf/descriptor.proto:537:12: Expected field name.

Соответствующие строки в descriptor.proto файле:
строка 381:

reserved 38;  

строка 439:

reserved 8;  // javalite_serializable  

строка 537:

reserved 4;  // removed jtype  

Это также единственные времена этот "зарезервированный [число]" синтаксис, используется, таким образом, я думаю, что этот синтаксис мог бы быть причиной проблемы так или иначе. У кого-либо есть какие-либо идеи об этом?

0
задан 13 December 2016 в 14:26

2 ответа

Таким образом, я получил ответ от кого-то еще, вот то, что наконец работало на меня:

Первый получают чистую загрузку всего кода (не только часть Python, как я первоначально сделал):

$ git clone https://github.com/google/protobuf.git

Затем установка некоторые зависимости и компиляция:

$ cd protobuf/
$ apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev git autoconf automake libtool curl make g++ unzip

Затем следуют за src/README.md:

$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install

Затем устанавливают часть Python, как описано в python/README.md

$ cd python
$ python setup.py build
$ python setup.py test
$ python setup.py install
2
ответ дан 28 September 2019 в 00:51

Проблема - Вы только вытянутая часть репозитория (protobuf/python), но установка ищет файлы в другом каталоге (protobuf/src/google/protobuf/descriptor.proto)

, Поэтому просто вытягивают в полном репозитории:

$ git clone https://github.com/google/protobuf.git 

Затем:

$ cd protobuf/python

И следуют инструкциям по установке в README.md.

1
ответ дан 28 September 2019 в 00:51

Другие вопросы по тегам:

Похожие вопросы: