LumaPictures / usd-qt

Reusable Qt Components for Pixar's USD
Other
153 stars 40 forks source link

Allow pxr-modulepath independent builds #23

Closed bfloch closed 5 years ago

bfloch commented 6 years ago

We have a hard time accepting usd-qt into our build environment. Being rez-based we expect "libraries" to install to separate locations.

usd-qt chose the pxr namespace, which in our experience will not work in python if a separate install location is chosen.

Basically python has to choose between the pxr module of usd-qt and the one supplied by usd and it is not happy to do so.

I can only assume that reusing the pxr namespace was in expectation to be eventually pulled into usd itself, which would solve the issue as well.

Is there something obvious I am missing to make it work? Is there any hope what we could move to a more neutral namespace? Relative imports would make make it more robust against future adoptions into other namespaces. Or is there an intimidate plan to pull into usd?

We would be happy to contribute some work, but we rather don't want to diverge from your work.

Thanks!

nrusch commented 6 years ago

Hi @bfloch,

I think this recently-closed issue will answer your questions about package name sharing/merging: https://github.com/LumaPictures/usd-qt/issues/19

We use rez as well, and release USD and usd-qt separately, but use both together without issue, and I know others do the same.

Let me know if you have any more questions.

chadrik commented 6 years ago

Hi @bfloch, We realize that this situation is not ideal. You're right in your guess that Pixar is interested in the idea of this project being subsumed into USD in the future, which is what makes the right solution now less than obvious. We have a few choices:

  1. stick with the status quo, and provide better documentation of the search order quirk
  2. switch to a new package namespace, forcing all users to update their code, with a possible future penalty of switching back
  3. make a PR to add pkgutil support to USD itself, to remove the search order quirk

I opened a related issue on USD awhile back: https://github.com/PixarAnimationStudios/USD/issues/284

I'll take this up there and see what Pixar thinks. In the meantime, we should definitely do option 1. I'll leave this issue open as a reminder to get that done.

nrusch commented 6 years ago

Good point about the documentation @chadrik. I'll try to get the README updated today.

bfloch commented 6 years ago

Thanks for reply. I'm glad you recognize the problem, but I also understand that you wouldn't want to switch back and forth. I will monitor the Pixar ticket and see how it evolves.

@nrusch I am really looking forward to see the additional documentation.

As to the build process: At least locally we were able to just build directly into the tbe_usd path. We wouldn't want to do this for "rez-releases" but its good enough to get us started.

nrusch commented 6 years ago

@bfloch I just want to make sure it that it is clear that it is very possible to release the packages in two different locations and still use them together. The "search order quirk" @chadrik mentioned is basically just that UsdQt currently needs to be "higher" on the PYTHONPATH than USD itself, but after that, things should work without needing to install them in different locations.

Are you running into any other problems getting the two packages to coexist at this point?

bfloch commented 5 years ago

@nrusch this worked! Thanks. I guess this can be closed now, considering the documentation in the README.

chadrik commented 5 years ago

By the way, I learned recently that python 3.3 introduced an alternative to pkgutil without the drawbacks, called namespace packages. We just have to wait one more year.