需要帮助从Github编译C++ Python项目到Conda环境

0 投票
1 回答
53 浏览
提问于 2025-04-14 16:28

如果有人能帮我解决这个问题,我会非常感激!

我在处理一个很老的开源C++项目,这个项目来自github,自从Python 3.4之后就没有官方更新了:https://github.com/Mindwerks/plate-tectonics

我用全新的Python 3.10.11安装,在PyCharm的虚拟环境中,使用这个文件夹里的setup.py文件成功编译了这个项目:https://github.com/Mindwerks/plate-tectonics/blob/master/pybindings/setup.py

编译完成后,我可以手动把生成的*.pyd文件复制粘贴到PyCharm的venv\Lib\site-packages文件夹里。这个包运行得非常正常。

不过,出于实际考虑,我想换成使用conda环境。我创建了这个环境(python 3.10.13,可能还有Cython?),然后按照在PyCharm中成功的步骤操作:在conda终端打开环境,运行“python setup.py build”,然后把编译出的*.pyd文件复制到环境的\Lib\site-packages文件夹里。

但是,现在如果我尝试运行这个包里的函数,Python立刻就崩溃了。

我完全搞不懂问题出在哪里,也不知道该怎么解决。我对C++或编译包的经验不多,而且没有收到任何错误信息提示我可能做错了什么。我猜测conda环境和PyCharm的虚拟环境行为不同,但我找不到任何建议告诉我应该怎么做才好。

如果有人有这方面的经验,知道我该怎么做,那真是太有帮助了!!!

1 个回答

0

看起来问题出在旧的 setup.py 文件中的这一段代码:

# We add all .cpp files to the sources 
sources = [ 'platec_src/platecmodule.cpp']
for f in os.listdir(cpp_src_dir):
  if f.endswith(".cpp"):
    sources.append("%s/%s" % (cpp_src_dir, f))

特别是最后一行,需要改成:

# We add all .cpp files to the sources 
sources = [ 'platec_src/platecmodule.cpp']
for f in os.listdir(cpp_src_dir):
  if f.endswith(".cpp"):
    sources.append(os.path.join(cpp_src_dir, f))

撰写回答