首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >即使Python模块在PYTHONPATH中,也无法导入它

即使Python模块在PYTHONPATH中,也无法导入它
EN

Stack Overflow用户
提问于 2022-10-09 14:39:15
回答 2查看 66关注 0票数 0

我试图运行Pixar的USDZ转换工具,但我似乎无法运行Python,它抱怨错误Error: failed to import pxr module. Please add path to USD Python bindings to your PYTHONPATH

我是在Ubuntu上而不是在本机MacOS上这样做的,但是我已经从位于/usr/local/USD/中的美元库源代码中编译了。

运行脚本输出上述错误:

代码语言:javascript
运行
复制
$ ./usdzconvert -h
  Error: failed to import pxr module. Please add path to USD Python bindings to your PYTHONPATH

尽管我为PYTHONPATH增加了一条道路:

代码语言:javascript
运行
复制
$ echo $PYTHONPATH
:/usr/local/USD/lib/python:/usr/local/USD/lib/python/pxr:/usr/local/USD/lib

此外,Python似乎很好地看到了这一点:

代码语言:javascript
运行
复制
$ 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变量,并运行它,得到与上面相同的路径。

引发错误的脚本部分如下所示:

代码语言:javascript
运行
复制
#!/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:

代码语言:javascript
运行
复制
$ python --version
Python 2.7.17

python3 --version
Python 3.6.9

但是,考虑到脚本一开始就指示使用python3,我会认为这样做很好,不是吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-10 15:07:22

所以我终于知道问题出在哪里了。我修改了python脚本以打印实际的导入消息,这就是我得到的:

代码语言:javascript
运行
复制
dynamic module does not define module export function (PyInit__tf)

一个快速的谷歌搜索将我带到这个回答,它解释了这个模块是用python2编译的,所以我用python 3重新编译了美元,重新安装了它的所有对应的v3依赖项,然后我再次运行了脚本,这次没有更多的导入错误。

票数 0
EN

Stack Overflow用户

发布于 2022-10-09 15:31:09

我不知道为什么,但有时候,像这样的事情对我有用:

代码语言:javascript
运行
复制
PYTHONPATH=. ./usdzconvert -h

这个怎么样:

代码语言:javascript
运行
复制
#!/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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74005679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档