我试图运行Pixar的USDZ转换工具,但我似乎无法运行Python,它抱怨错误Error: failed to import pxr module. Please add path to USD Python bindings to your PYTHONPATH
。
我是在Ubuntu上而不是在本机MacOS上这样做的,但是我已经从位于/usr/local/USD/
中的美元库源代码中编译了。
运行脚本输出上述错误:
$ ./usdzconvert -h
Error: failed to import pxr module. Please add path to USD Python bindings to your PYTHONPATH
尽管我为PYTHONPATH增加了一条道路:
$ echo $PYTHONPATH
:/usr/local/USD/lib/python:/usr/local/USD/lib/python/pxr:/usr/local/USD/lib
此外,Python似乎很好地看到了这一点:
$ python3 -c 'import sys; print(sys.path)'
['', '/home/julien', '/usr/local/USD/lib/python', '/usr/local/USD/lib/python/pxr', '/usr/local/USD/lib', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
我还尝试将print(sys.path)
添加到脚本的开头,以确认它正在加载相同的env变量,并运行它,得到与上面相同的路径。
引发错误的脚本部分如下所示:
#!/usr/bin/env python3
import os.path
from os import chdir
import sys
import importlib
import tempfile
from shutil import rmtree
import zipfile
usdLibLoaded = True
kConvertErrorReturnValue = 2
if sys.version_info.major != 3:
print(' \033[93mWarning: It is recommended to use Python 3. Current version is ' + str(sys.version_info.major) + '.\033[0m')
try:
from pxr import *
import usdUtils
except ImportError:
print(' \033[91mError: failed to import pxr module. Please add path to USD Python bindings to your PYTHONPATH\033[0m')
usdLibLoaded = False
我对python一无所知,所以我不知道这个重要的问题,有什么想法吗?
我安装了python 2和3:
$ python --version
Python 2.7.17
python3 --version
Python 3.6.9
但是,考虑到脚本一开始就指示使用python3,我会认为这样做很好,不是吗?
发布于 2022-10-10 15:07:22
所以我终于知道问题出在哪里了。我修改了python脚本以打印实际的导入消息,这就是我得到的:
dynamic module does not define module export function (PyInit__tf)
一个快速的谷歌搜索将我带到这个回答,它解释了这个模块是用python2编译的,所以我用python 3重新编译了美元,重新安装了它的所有对应的v3依赖项,然后我再次运行了脚本,这次没有更多的导入错误。
发布于 2022-10-09 15:31:09
我不知道为什么,但有时候,像这样的事情对我有用:
PYTHONPATH=. ./usdzconvert -h
这个怎么样:
#!/usr/bin/env python3
import os.path
from os import chdir
import sys
import importlib
import tempfile
from shutil import rmtree
import zipfile
usdLibLoaded = True
kConvertErrorReturnValue = 2
if sys.version_info.major != 3:
print(' \033[93mWarning: It is recommended to use Python 3. Current version is ' + str(sys.version_info.major) + '.\033[0m')
pxr_path = '/usr/local/USD/lib/python/pxr'
sys.path.append(pxr_path)
sys.path.append(os.path.dirpath(pxr_path))
try:
from pxr import *
import usdUtils
except ImportError:
print(' \033[91mError: failed to import pxr module. Please check the path to USD\033[0m')
usdLibLoaded = False
https://stackoverflow.com/questions/74005679
复制相似问题