You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autodesk Vault Developer Framework Python登录失败问题求助

Python通过pythonnet调用Autodesk Vault登录失败(Success=False),VB相同逻辑可成功

问题描述

尝试通过pythonnet的clr模块调用Autodesk Vault Developer Framework的Autodesk.DataManagement.Client.Framework.Vault.Library.ConnectionManager.LogIn方法,但返回结果的Success属性始终为False。相同的登录逻辑在Visual Basic中可正常执行,Success返回True。

已尝试调整DLL导入方式、手动类型转换(Python通常无需此操作),但问题仍未解决。

相关Python代码

from pythonnet import load
load("netfx")
import clr


print("check001")
clr.AddReference("C:\Program Files\Autodesk\Autodesk Vault 2024 SDK\bin\x64\Autodesk.Connectivity.WebServices.dll")
import Autodesk.Connectivity.WebServices as ACW
from Autodesk.Connectivity.WebServices import *

print("check002")
clr.AddReference("C:\Program Files\Autodesk\Autodesk Vault 2024 SDK\bin\x64\Autodesk.Connectivity.WebServices.WCF.dll")
import Autodesk.Connectivity.WebServices.WCF as ACWW
from Autodesk.Connectivity.WebServices.WCF import *

print("check003")
clr.AddReference("C:\Program Files\Autodesk\Autodesk Vault 2024 SDK\bin\x64\Autodesk.DataManagement.Client.Framework.dll")
import Autodesk.DataManagement.Client.Framework as VDF
from Autodesk.DataManagement.Client.Framework import *

print("check004")
clr.AddReference("C:\Program Files\Autodesk\Autodesk Vault 2024 SDK\bin\x64\Autodesk.DataManagement.Client.Framework.Vault.dll")
import Autodesk.DataManagement.Client.Framework.Vault as VDFV
from Autodesk.DataManagement.Client.Framework.Vault import *


print("check005")
results: VDF.Vault.Results.LogInResult
results = VDF.Vault.Library.ConnectionManager.LogIn("tmc-vault.ad.thielenhaus.us", "TMC_Vault", "python", "Zap-Thesis-Sacrament2", VDF.Vault.Currency.Connections.AuthenticationFlags.Standard, None)

print("check006")
connection: VDF.Vault.Currency.Connections.Connection
connection = results.Connection

print("check007")
print(results.Success)

核心疑问

  1. 是否有开发者成功在Python中实现该登录逻辑?
  2. 为何Python与VB执行相同逻辑会有不同结果?
  3. 有哪些具体的解决建议?

解决建议

  1. 修复路径转义问题
    Python字符串中的反斜杠是转义符,你代码里的DLL路径直接使用\会被解析为转义字符,导致路径无效。需改为双反斜杠\\或原始字符串格式:

    clr.AddReference(r"C:\Program Files\Autodesk\Autodesk Vault 2024 SDK\bin\x64\Autodesk.Connectivity.WebServices.dll")
    

    VB中无需处理反斜杠转义,这是Python与VB的核心差异之一,大概率是登录失败的直接原因。

  2. 确认环境匹配

    • 必须使用64位Python环境,因为Vault SDK的x64 DLL无法在32位Python中加载。
    • 确保pythonnet加载的.NET Framework版本与Vault 2024依赖的版本一致(通常为.NET Framework 4.8),代码中load("netfx")的设置是正确的,但若本地存在多个.NET版本,需确认优先级。
  3. 获取详细错误信息
    不要仅依赖Success属性,打印错误详情定位问题:

    print(f"错误信息: {results.ErrorMessage}")
    print(f"异常详情: {results.Exceptions}")
    

    这能直接得到登录失败的具体原因,比如认证失败、服务器连接问题、DLL依赖缺失等。

  4. 验证参数类型匹配
    虽然pythonnet会自动处理类型转换,但部分.NET枚举或复杂类型可能需要显式指定。比如尝试直接传入AuthenticationFlags.Standard的枚举值(通常为0)替代枚举对象,测试是否能成功登录。

  5. 检查DLL依赖完整性
    确认Vault SDK目录下的所有依赖DLL都可被Python进程加载,可将SDK的x64目录添加到系统环境变量PATH中,或在代码中手动添加路径:

    import sys
    sys.path.append(r"C:\Program Files\Autodesk\Autodesk Vault 2024 SDK\bin\x64")
    

补充说明

已有开发者通过pythonnet成功实现Autodesk Vault的登录逻辑,核心是解决路径转义、环境匹配和参数类型这几个关键问题。

内容的提问来源于stack exchange,提问作者egress-tmc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:40:19