protoc object_detection / protos / *. proto: нет такого файла или каталога

Я следую примеру, найденному здесь. Но всякий раз, когда я ввожу команду «C: / Program Files / protoc / bin / protoc» object_detection / protos / .proto --python_out =. Я получаю сообщение об ошибке object_detection / protos / .proto: нет такого файла или каталога. Я не могу создать каталог с именем * .proto. Так что мне не хватает фундаментальной информации о том, как это сделать. Поскольку я не могу найти никого, кто жаловался бы на эту проблему, это должно быть довольно просто. Я использую ОС Windows.


person twofair    schedule 29.09.2017    source источник
comment
ОБНОВЛЕНИЕ: Итак, * .proto ищет любой файл с расширением proto. Но в этой папке их нет. В учебнике говорится, что нужно перейти в папку мастер-модели, но прото находится в папке research / object_detection / protos. Итак, я изменил входные данные в эту папку, но теперь я получаю сообщение об отсутствии директивы вывода. Я указал командной строке полный путь, и это не сработало. Я не знаю, чего он хочет.   -  person twofair    schedule 29.09.2017


Ответы (16)


Решено для Windows, перейдите в исследование и укажите протокол в пути, тогда это будет работать:

for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=.

Удачи !

person flowgrad    schedule 19.09.2018
comment
Это работает и с версией ›= 3.5, и в одну строку, отлично! - person PHPirate; 05.10.2018

Обязательно смените каталог на «models \ research \» и попробуйте выполнить шаги из руководства, используя protoc версии 3.4.0, как и в руководстве. Я работал у меня только с 3.4.0.

моя строка cmd, которая работала:

C:\Users\...\protoc-3.4.0-win32\bin\protoc object_detection/protos/*.proto --python_out=.
person underfloor    schedule 27.11.2017

Я собираюсь опубликовать это по всем тем вопросам, которые найду, чтобы люди знали. В любом случае я должен написать эти инструкции для себя и других позже.

Следующее работает и не работает:

protoc object_detection/protos/*.proto --python_out=.

* .Proto, обозначающий все файлы, не работает для компилятора. Если вы используете версию 3.5, вам необходимо указать каждый отдельный файл.

Итак, вот как это будет выглядеть:

  1. Запустить cmd
  2. измените свой каталог на папку с исследованиями, которую вы скачали (может отличаться):

    cd /d C:\Users\yourusername\Desktop\TensorFlow\models-master\models-master\research
    
  3. Узнайте расположение загруженного файла protroc.exe.

    C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc 
    
  4. Перейдите в папку protos, чтобы знать, какие файлы нужно делать индивидуально

    C:\Users\yourusername\Desktop\TensorFlow\models-master\models-master\research\object_detection\protos
    
  5. Теперь начните спамить каждый отдельный элемент .proto в этой папке в cmd:

    C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/anchor_generator.proto --python_out=.
    C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/argmax_matcher.proto --python_out=.
    C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/bipartite_matcher.proto --python_out=.
    ....and so on until you finish all items in the protos folder
    
  6. Или вы могли бы закончить день, получить 3,4 и запустить:

    C:\Users\yourusername\Projects\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/*.proto --python_out=.
    

Дайте мне знать, если я могу уточнить еще кое-что. Я стараюсь говорить предельно ясно, чтобы идиоты вроде меня могли меня понять.

person Noctsol    schedule 16.05.2018
comment
У меня есть cd в / models / research /, а затем я запустил C: / Program Files / protoc / bin / protoc.exe object_detection / protos / *. Proto --python_out =. Перейти к следующей ошибке Неправильное имя файла, имя каталога или синтаксис метки тома. - person Soumya Boral; 24.07.2018
comment
Однострочная команда не работает. Однако мы можем сделать это индивидуально, как описано в 5. - person Soumya Boral; 24.07.2018

измените каталог на модели или мастер модели тензорного потока, тогда вам нужно скомпилировать файлы .proto protobuff, используя следующие команды, выполняемые одну за другой

protoc --python_out=. .\object_detection\protos\anchor_generator.proto 
protoc --python_out=. .\object_detection\protos\argmax_matcher.proto  
protoc --python_out=. .\object_detection\protos\bipartite_matcher.proto 
protoc --python_out=. .\object_detection\protos\box_coder.proto 
protoc --python_out=. .\object_detection\protos\box_predictor.proto 
protoc --python_out=. .\object_detection\protos\eval.proto 
protoc --python_out=. .\object_detection\protos\faster_rcnn.proto 
protoc --python_out=. .\object_detection\protos\faster_rcnn_box_coder.proto 
protoc --python_out=. .\object_detection\protos\grid_anchor_generator.proto 
protoc --python_out=. .\object_detection\protos\hyperparams.proto 
protoc --python_out=. .\object_detection\protos\image_resizer.proto 
protoc --python_out=. .\object_detection\protos\input_reader.proto 
protoc --python_out=. .\object_detection\protos\losses.proto 
protoc --python_out=. .\object_detection\protos\matcher.proto 
protoc --python_out=. .\object_detection\protos\mean_stddev_box_coder.proto 
protoc --python_out=. .\object_detection\protos\model.proto 
protoc --python_out=. .\object_detection\protos\optimizer.proto 
protoc --python_out=. .\object_detection\protos\pipeline.proto 
protoc --python_out=. .\object_detection\protos\post_processing.proto 
protoc --python_out=. .\object_detection\protos\preprocessor.proto 
protoc --python_out=. .\object_detection\protos\region_similarity_calculator.proto 
protoc --python_out=. .\object_detection\protos\square_box_coder.proto 
protoc --python_out=. .\object_detection\protos\ssd.proto 
protoc --python_out=. .\object_detection\protos\ssd_anchor_generator.proto 
protoc --python_out=. .\object_detection\protos\string_int_label_map.proto 
protoc --python_out=. .\object_detection\protos\train.proto 
protoc --python_out=. .\object_detection\protos\keypoint_box_coder.proto 
protoc --python_out=. .\object_detection\protos\multiscale_anchor_generator.proto
protoc --python_out=. .\object_detection\protos\graph_rewriter.proto
person Aadhar Bhatt    schedule 28.05.2018

У меня такая же ошибка Object_detection/protos/.proto: No such file or directory.

Это решается, когда я использую Protocol Buffers v3.4.0.

Убедитесь, что вы находитесь внутри models-master\research, а затем используйте команду как:

FullPathToProtoc/protoc-3.4.0-win32/bin/protoc object_detection/protos/*.proto --python_out=.

person susan097    schedule 22.11.2018

ну в моем случае долго сломал голову ... проблема была в protoc версии 3.5 ... он не принимает эти аргументы в WINDOWS ... он будет работать полностью нормально, если вы загрузите версию 3.4.0, которую можно использовать с вашими точными аргументами :! protoc object_detection / protos / *. proto --python_out =.

person Kamornik Cola    schedule 28.05.2018

Если окажется, что вам не хватает всего models/research/object_detection/protos поддерева, как у меня, вы можете загрузить его отдельно с https://github.com/tensorflow/models. Отсутствие этих файлов приведет к той же ошибке, т.е. No such file or directory.

person craq    schedule 18.06.2018

Привет всем, вот как я смог решить эту ошибку, узнав об обнаружении объектов с помощью тензорного потока:

ШАГИ:

1- Чтобы загрузить Google Protobuf для 64-разрядной системы Windows 10, перейдите по этой ссылке. https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.0 и установите «protoc-3.4.0-win32.zip». (Совет - не устанавливайте protoc-3.6.0).

2- Загрузите файл моделей по этой ссылке. https://github.com/tensorflow/models

3.Теперь вам нужно выполнить компиляцию protobuf в командной строке с помощью каталога исследований:

4-Сначала войдите в каталог исследований: cd C: \ Users \ Ankit \ tensorflow \ models \ research и нажмите Enter // просто пример.

5-Затем выполните этот шаг сразу после предыдущего шага:

"C: \ Users \ Ankit \ Desktop \ Tensorflow \ protbuf \ bin \ protoc.exe" object_detection / protos / *. Proto --python_out =. и нажмите Enter (между объектом и знаком "есть пробел", это написано в одну строку)

6-Примечание: перейдите в папку object_detection / protos, и если там есть файлы .py, вы успешно завершили компиляцию ваших файлов .proto.

СПАСИБО

person Rachit Srivastava    schedule 16.01.2019

Файлы .proto должны находиться в tensorflow-models/research/object_detection/protos/.

Итак, вы должны сначала

cd C:\path\to\tensorflow-models\research 

как согласно инструкциям по установке. Вышеупомянутый путь является воображаемым и использует структуру пути Windows. Вы должны заменить его фактическим путем на вашем компьютере. И когда вы находитесь в этом каталоге, вы можете запустить свою команду:

C:\Program Files\protoc-<version>\bin\protoc object_detection/protos/.proto --python_out=.

Опять же, это всего лишь общий пример. Вам нужно будет заменить <version> своей версией protoc.

НЕ копируйте и вставляйте вышесказанное, так как это не будет работать непосредственно на вашем компьютере. Вместо этого вы должны найти путь к protoc двоичному файлу на своем компьютере и использовать его в качестве команды перед object_detection/protos/.proto --python_out=.

person Ciprian Tomoiagă    schedule 03.11.2017

иногда Windows Cmd не принимает подстановочный знак '*'. вот почему он показывает ошибку. вы можете использовать цикл для решения этой проблемы. Чтобы создать цикл в Cmd, просмотрите эту ссылку. https://ss64.com/nt/for.html ref: protoc не может найти файлы в Windows 7

person Prashant Shukla    schedule 04.12.2017

Я столкнулся с проблемой missing output directive. Решение, которое сработало для меня, заключалось в том, что я пробовал использовать полные имена файлов, поскольку *.proto не работал.

person dls    schedule 08.05.2018

У меня такая же проблема с ubuntu 16.04. Измените каталог на поиск, и теперь проблема с отсутствующим файлом решена.

person Amresh    schedule 16.05.2018

Перейдите на страницу протокольных выпусков и загрузите протокол протоколов 3.4.0-win32.zip, распакуйте его, и вы найдете protoc.exe в каталоге bin. тогда к системному пути нужно добавить путь.

Переместите это в папку моделей / исследований. Проект модели тензорного потока.

Затем вы можете использовать команду protoc.

protoc object_detection / protos / *. proto --python_out =.

person Chamod Pathirana    schedule 20.08.2018

Небольшой код на Python, который может помочь вам быстрее скомпилировать протокол

import os

#folder where protos are located
os.chdir('C:\\Users\\ ~ \\models-master\\research\\object_detection\\protos')
#list protos
fs=os.listdir()

#back to where your protoc.exe is located
os.chdir('C:\\Users\\ ~ \\models-master\\research')

for f in fs:
if f.find(".proto")>-1:
    print(f)
    s='protoc object_detection/protos/'+f+' --python_out=.'
    print(s)
    os.system(s)
person Constanza Garcia    schedule 26.09.2018

Это то, что я сделал, и я мог скомпилировать с версией 3.4 и 3.6 в Windows 7 Professional.

C:\tensorflow1\models\research>for /F %i in 
('dir /b 
.\object_detection\protos\*
.proto') do ( c:\tensorflow1\models\research\bin/protoc 
.\object_detection\protos\%i --python_out=.)
person Ram Ramesh    schedule 14.11.2018

Я использую protoc-3.6.1-win32.zip .. В windows

Создал командный файл, который скомпилирует все файлы .proto.

для %% v в object_detection \ protos * .proto do (D: \ bin \ protoc %% v --python_out =.)

Запустите этот командный файл из папки models \ research. Измените путь протокола. Надеюсь, это поможет другим, и нам не нужно устанавливать более старые версии протокола. Спасибо

person Shishir Vikrant    schedule 11.01.2019