The repro is somewhat unclear.
The package structure is uses `abc` but the protobuf sources use `adc`; I
assume both should be the same.
In `share.proto`, `message Test` contains no fields and fields contain
values, so the `Test` message contains no values and isn't useful.
The `detect.proto` contains no messages and so isn't useful either.
If instead the following structure is used:
```
.
├── com
│ └── abc
│ ├── depart
│ │ └── detect.proto
│ └── protobuf
│ └── share.proto
└── main.py
```
And:
`detect.proto`:
```
syntax = "proto3";
package com.abc.depart;
import "com/abc/protobuf/share.proto";
message X{
com.abc.protobuf.Test test = 1;
}
```
And:
`share.proto`:
```
syntax = "proto3";
package com.abc.protobuf;
message Test{
string value = 1;
}
```
Because, there's a single protopath (`${PWD}` or `.`), we can use one
`protoc` command to compile to Python sources:
```bash
protoc \
--proto_path=${PWD} \
--python_out=${PWD} \
--pyi_out=${PWD} \
${PWD}/com/abc/depart/detect.proto \
${PWD}/com/abc/protobuf/share.proto
```
and e.g. `main.py`:
```python3
from com.abc.depart import detect_pb2
x = detect_pb2.X()
x.test.value = "foo"
print(x)
```
Yields:
```console
test {
value: "foo"
}
```
On Thursday, September 14, 2023 at 9:32:17 PM UTC-7 Charlie Tian wrote:
> "I've encountered the same issue. Have you found a solution?
>
> 在2018年1月17日星期三 UTC+8 15:52:17<Alexander Luya> 写道:
>
>> I have two packages like this
>>
>> com.abc.
>> protobuf.
>> share.proto
>> depart.
>> detect.proto
>>
>> and the conent of share.proto like this:
>>
>> syntax = "proto3";
>> package com.adc.protobuf;
>> message Test{}
>>
>> and the content of detect.proto like this:
>>
>> syntax = "proto3";
>> package com.adc.depart;
>> import "com/abc/protobuf/share.proto"
>>
>> and compile share.proto in it's dir like this:
>>
>> protoc -I=. --python_out=. share.proto
>>
>> then compile detect.proto in it's dir like this:
>>
>> protoc -I=/pathToSrcDir/ -I=. --python_out=. detect.proto
>> and
>>
>> pathToSrcDir has been added to PYTHONPATH
>>
>> all compilations work fine,but when run a python script which
>>
>> from com.abc.depart import detect_pb2
>>
>> got this error
>>
>> TypeError: Couldn't build proto file into descriptor pool!
>> Invalid proto descriptor for file "detect.proto":
>> detect.proto: Import "com/abc/protobuf/share.proto" has not been
>> loaded.
>> com.abc.depert.XClass.ymethod: "com.abc.protobuf.Test" seems to be
>> defined in "share.proto", which is not imported by "detect.proto". To use
>> it here, please add the necessary import.
>>
>> How to solve this import problem?
>>
>
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/protobuf/2645b186-2943-411d-b2f9-bd26974bae44n%40googlegroups.com.