Python C扩展 使用setup.py build无法构建

rzyk2005 2014-07-02 08:57:20
环境:windows XP,C编译器 VS2010
我用C语言写的函数想用作python的扩展,调用的setup.py build后提示c1 : fatal error C1083: 无法打开源文件:“example.c”: No such file or directory error: command '"D:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe"' failed with exit status 2
编译器无法找到源文件?需要如何配置?将C源文件和setup.py放在什么目录下?
...全文
897 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2014-07-04
  • 打赏
  • 举报
回复
import就崩溃,那把PyInit_xxx贴出来看看。感觉win下还是用vc建个方案编译为妥,有问题可以在里面进行调试方便很多...
angel_su 2014-07-03
  • 打赏
  • 举报
回复
编译器说找不到example.c,那就是当前工作目录不是源文件所在位置,或者文件名不对类似example.c.txt已知扩展名被windows隐藏了...
rzyk2005 2014-07-03
  • 打赏
  • 举报
回复
我试过了,不行,还是找不到源文件,如下信息: running build running build_ext building '_example' extension D:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe /c /nologo /Ox /MD / W3 /GS- /DNDEBUG "-I.c E:\TEMPLATE\pyextend" -IC:\Python34\include -IC:\Python34 \include /Tcexample.c /Fobuild\temp.win32-3.4\Release\example.obj example.c c1 : fatal error C1083: 无法打开源文件:“example.c”: No such file or directory error: command '"D:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe"' f ailed with exit status 2 你做过这样的测试吗?
  • 打赏
  • 举报
回复
引用 7 楼 rzyk2005 的回复:
我放在python的路径下就可以了,已经生成了 _example.lib和_example.pyd,现在的问题是在python环境里输入"import _example"回车便会崩溃,找不出原因
放在Python路径下可以,就说明你的Python搜索路径没有正确被添加,编译的时候就找不到相关文件 、 现在运行失败也是一个道理,Python默认的搜索路径只有Python安装路径和当前运行路径 你可以试着将_example.pyd所在目录添加到sys.path中
  • 打赏
  • 举报
回复
引用 7 楼 rzyk2005 的回复:
我放在python的路径下就可以了,已经生成了 _example.lib和_example.pyd,现在的问题是在python环境里输入"import _example"回车便会崩溃,找不出原因
.pyd相关的DLL文件没有在 System32 下或者在 .pyd 文件当前文件夹, 或者没有在 python 的 sys path 中存在.
rzyk2005 2014-07-03
  • 打赏
  • 举报
回复
我放在python的路径下就可以了,已经生成了 _example.lib和_example.pyd,现在的问题是在python环境里输入"import _example"回车便会崩溃,找不出原因
  • 打赏
  • 举报
回复
# -*- coding: cp936 -*- from distutils.core import setup, Extension module1 = Extension('example', sources = ['example.c']) setup (name = 'example', version = '1.0', description = 'this is a demo package', ext_modules = [module1], author = 'Arthur') 这样试过了没问题 可以啊 不行你就添加一下文件搜索路径 Extension('example', sources = ['example.c'],include_dirs = [".c 搜索路径"])
rzyk2005 2014-07-02
  • 打赏
  • 举报
回复
什么路径?我这里根本就没有路径这一说,你提供的地址也无法解决这个问题, from distutils.core import setup, Extension setup (name="example", version="1.0", # py_modules = ['example.py'], ext_modules = [ Extension("_example", ["example.c", "pyexample.c" ]) ] )
  • 打赏
  • 举报
回复
应该.c 和setup.py 放在同级目录下没错 路径应该用" "扩起来 防止空格等出错,'\'替换为'\\' 防止意外的转义 http://www.pythontab.com/html/2013/pythonhexinbiancheng_0830/551.html
The_Third_Wave 2014-07-02
  • 打赏
  • 举报
回复
D:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe 路径不正确吧,使用\\。即:D:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\BIN\\cl.exe
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 在Python开发过程中,我们常常需要安装一些未在PyPI上发布的模块,这些模块通常会附带一个setup.py文件来辅助安装。setup.py是一个遵循distutils或setuptools规范的Python脚本,它包含了模块的基本信息(如名称、版本、作者、依赖等)以及用于构建、打包和安装模块的指令。通过运行setup.py,我们可以完成一系列自动化任务,包括编译源代码、创建安装包以及将模块安装到Python环境中。以下是通过setup.py安装模块的步骤: 打开终端或命令提示符:在Windows系统中,打开命令提示符;在macOS或Linux系统中,打开终端。 进入模块源代码目录:使用cd命令切换到包含setup.py文件的目录。例如,如果setup.py位于C:\Users\YourName\Project,则在命令提示符中输入cd C:\Users\YourName\Project。 执行build命令:运行python setup.py build。这一步会编译源代码(如果模块包含C扩展或其他非纯Python代码),并将编译结果存放在build子目录中。 执行install命令:接着运行python setup.py install,将编译后的模块复制到Python环境的site-packages目录,使其可以在Python中被导入和使用。需要注意的是,执行install命令时可能需要管理员权限,尤其是在修改全局Python环境时。在macOS/Linux系统中,可以在命令前加上sudo;在Windows系统中,则需要以管理员身份运行命令提示符。 在安装过程中,还需要注意以下几点: setuptools与distutils:虽然setup.py基于distutils库,但se

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧