前言:
本人目前在进行的是一个Revit二次开发项目。在通过调用Python数据库,经由C#接口在Revit中进行创建模型的时候遇到了问题。只有C#程序里的dialog能显示,但模型不见踪影。三周内试过了非常多的办法,就差重装系统了。查阅了CSDN里很多文章,但说的都不够明确。今天终于解决。在此记录,以利后人。
感谢此文提供的测试文件和评论区提供的思路
c#调用python的四种方法(尝试了四种,只详细讲解本人成功的后两种,其余方法只列出,详细用法请自行谷歌百度)_武林大皮虾的博客-CSDN博客_c#调用python
感谢外包人员杨博士的协助
1. 问题描述:
在spyder中python文件可执行,但无法在C#中调用python提供的数据
2. 解决流程
(1)首先尝试在cmd控制台中运行python文件
提示无法载入numpy
那么下一步显然是安装numpy等常用包
(2)安装numpy等常用包
(3)再次运行python文件
和第一次情况一样。这就很令人费解了。
转念一想,可能是anaconda的问题。按杨博士的说法,anaconda和系统有冲突。因为也安装过其他版本的python,于是把系统配置环境里的anaconda相关的地址删除(此处省略,配置系统的操作很容易搜到),换了个python地址。
(4)通过其它python应用程序运行python文件
见上图,在要运行文件名前加入其他地址的python应用程序。此时显示缺少一些包。
(5)安装缺少的包。程序正确运行。
(6)调入到C#文件中生成dll,能被Revit识别并输出模型。完美解决
完结撒花
3. 方法总结和感悟
现在回想起来就是个系统环境问题。使用其他编译器会掩盖系统环境不匹配的问题。有些时候还是要多使用cmd而不是其他编译器进行操作,尤其是涉及到不同编程语言,不同软件的协同问题。
不过我知道有人使用anaconda的python成功执行了此python文件,所以也不能把锅全甩给anaconda。
后来有人分析是可能之前安装的包都在anaconda目录下,只能在其内部调用。而C#即便是调用了anaconda里的python也不能保证其他包不确实且回报错,感觉很奇怪。
如果知道怎么做,所有的操作花不了三分钟,但想出到哪里去解决就很难。
感谢在解决这个问题上所有给我提供过帮助的人。我还要继续努力。
希望此文对有需要的人有所帮助



