pytorch3d安装遇到的一些坑和解决过程

2023-10-30

最近为了安装pytorch3d,折腾了两天,足足两天!

要注意,安装pytorch3d之前,必须先安装pytorch torchvision

Pytorch3d官方 是建议用conda install的方式来安装,也可以用pip来安装:

pip install PyTorch torchvision -c pytorch-nightly

1.首先说一下MacOS M1 芯片安装情况,刚开始使用的是:

conda install pytorch3d -c pytorch3d

会安装完成,但是安装完以后执行.py文件跑程序时,会出现无法引用pytorch3d的问题,也尝试过用pip install pytorch3d ,这种方式会安装成最低版本:0.0.1,跑代码的时候依然出现无法应用的问题。

也尝试过这个方法:MacBook m1安装GPU版PyTorch与简单测试 - 知乎 并且修改了项目中的device值为‘mps’,如:device='mps',但是跑程序的时候还是会出现无法引用pytorch3d异常。搜索了好久,看到一个遇到同样的问题,最终通过源码安装成功了,加上刚开始我在ubuntu18.04 系统上安装了好久pytorch3d都没成功,然后我选择了源码安装

2.通过源码安装pytorch3d

git clone https://github.com/facebookresearch/pytorch3d.git
cd pytorch3d
pip install -e .

过程有点久,但是安装成功会提示:Successfully installed pytorch3d-0.7.0

安装之前可以先使用:rm -rf build/ **/*.so 清理掉pytorch3d目录下的build文件夹,因为这个文件夹里面会生成当前设备对应的pytorch3d包。安装完成以后会生成两个文件夹:

pytorch3d/build/temp.macosx-11.1-arm64-cpython-39

pytorch3d/build/lib.macosx-11.1-arm64-cpython-39

如果只看到temp文件夹,那说明还没编译完成

但是我在macos m1上安装完成以后,跑程序时,提示异常:

ImportError: dlopen(/Users/xx/Desktop/pytorch3d/pytorch3d/_C.cpython-39-darwin.so, 0x0002): tried: '/Users/xx/Desktop/pytorch3d/pytorch3d/_C.cpython-39-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e'))

看起来当前有x86_64架构的pytorch3d,但是需要arm64结构的,当我用pip list 查看的时候,发现其中有一条:

pytorch3d               0.7.0              /Users/xx/Desktop/pytorch3d

而对应的 /Users/xx/Desktop/pytorch3d/build中也是arm64架构的,不知道什么原因,我目前没能在macos m1的设备上跑起来。接下来继续转战Ubuntu18.04

3.在Ubuntu18.04中安装

在这个环境我花了大部分的时间,同样遇到了和mac系统一样的无法引用pytorch3d的问题,还遇到了torch版本和cuda版本不匹配的问题,尝试过升级cuda,也按照官方文档:Start Locally | PyTorch 尝试了conda安装,会出现pytorch3d无法引用torch的问题,需要安装完torch以后,再安装pytorch3d。这个过程遇到了很多奇怪的问题,最后还是用源码安装pytorch3d解决了问题

总结:用conda和pip直接安装pytorch3d可能比较快,但可能无法引用,用源码安装应该都能解决问题。

cuda、pytorch、pytorch3d、torchvision、torchaudio 之间有较强的版本依赖,尤其是cuda11之前的版本不支持超过7.5算力的设备,需要先升级cuda版本到11以上,再安装pytorch相关库,再安装pytorch3d。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytorch3d安装遇到的一些坑和解决过程 的相关文章

  • Python 中的字节数组

    如何在 Python 中表示字节数组 如 Java 中的 byte 我需要用 gevent 通过网络发送它 byte key 0x13 0x00 0x00 0x00 0x08 0x00 在Python 3中 我们使用bytes对象 也称为s
  • 如何将base64字符串直接解码为二进制音频格式

    音频文件通过 API 发送给我们 该文件是 Base64 编码的 PCM 格式 我需要将其转换为 PCM 然后再转换为 WAV 进行处理 我能够使用以下代码解码 gt 保存到 pcm gt 从 pcm 读取 gt 保存为 wav decod
  • boto3 资源(例如 DynamoDB.Table)的类型注释

    The boto3库提供了几种返回资源的工厂方法 例如 dynamo boto3 resource dynamodb Table os environ DYNAMODB TABLE 我想注释这些资源 以便我可以获得更好的类型检查和完成 但我
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • Python在postgresql表中查找带有单引号符号的字符串

    我需要从 psql 表中查找包含多个单引号的字符串 我当前的解决方案是将单引号替换为双单引号 如下所示 sql query f SELECT exists SELECT 1 FROM table name WHERE my column m
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 根据开始列和结束列扩展数据框(速度)

    我有一个pandas DataFrame含有start and end列 加上几个附加列 我想将此数据框扩展为一个时间序列 从start值并结束于end值 但复制我的其他专栏 到目前为止 我想出了以下内容 import pandas as
  • numpy 使用 datetime64 进行数字化

    我似乎无法让 numpy digitize 与 datetime64 一起使用 date bins np array np datetime64 datetime datetime 2014 n 1 s for n in range 1 1
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • Python Pandas 根据另一列的总计从另一个数据帧中选择值

    我下面有一个 DataFrame 但我需要根据取消和订单列从每个代码中选择行 假设代码 xxx 的阶数为 6 1 5 1 阶数为 11 我需要一种算法 可以选择满足总共 11 行的行 阶数为 6 5 如果没有行匹配 则选择最接近的 id 并
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • PyTorch DataLoader 对并行运行的批次使用相同的随机种子

    有一个bug https tanelp github io posts a bug that plagues thousands of open source ml projects 在 PyTorch Numpy 中 当并行加载批次时Da
  • 使用 numpy 在 python 中执行最大方差旋转

    我正在研究矩阵的主成分分析 我已经找到了如下所示的组件矩阵 A np array 0 73465832 0 24819766 0 32045055 0 3728976 0 58628043 0 63433607 0 72617152 0 5
  • Pandas style.bar 颜色基于条件?

    如何渲染其中一列的 Pandas dfstyle bar color属性是根据某些条件计算的 Example df style bar subset before after color ff781c vmin 0 0 vmax 1 0 而
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • 检测 IDLE 的存在/如何判断 __file__ 是否未设置

    我有一个脚本需要使用 file 所以我了解到 IDLE 没有设置这个 有没有办法从我的脚本中检测到 IDLE 的存在 if file not in globals file is not set 如果你想做一些特别的事情 file 未设置
  • 为什么 smtplib.SMTP().sendmail 不发送 DKIM 签名邮件

    我已经在服务器上设置了 postfix 以及 openDKIM 当我跑步时 echo Testing setup mail s Postfix test my email address 我收到电子邮件 邮件标题中有一个DKIM Signa
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav

随机推荐