python三方包 与 Microsoft Visual C++

本文介绍了如何解决Python开发过程中遇到的Microsoft Visual C++ 14.0依赖问题,包括安装Visual Studio Build Tools的具体步骤及注意事项。
部署运行你感兴趣的模型镜像

问题

error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/

这个报错几乎每个Python开发人员都会遇到,而且很方便的到报错信息中指定的网站去下载一个小小的工具,不费事的安装一下就完事了,但是,这个世界已经变了。

1. 以前用【visualcppbuildtools_full.exe】工具,小小的3MB,安装一下,马上就可以用了,但是现在不行了,被微软官方回收了,强制要安装他们的 IDE 才行。。

不信你自己看:

2. 还有网上大篇幅说的安装【Twisted-20.3.0-cp39-cp39-win_amd64.whl】也是不行的,目前win10系统,就老老实实的下载他们的 IDE 吧。

3. 进入官网【https://visualstudio.microsoft.com/zh-hant/visual-cpp-build-tools/】,下载【文件】后运行,选择C++桌面开发,右边只选MSVC v142 和 Windows 10 SDK。安装完还要重启电脑(预料之中,微软的东西基本都要重启才行。。)

4. 重启之后的光景

服了,还是不行,但是起码C++那些包没报错。。

好吧,原来是【panda】安装的时候不要指定版本号

心得

折腾了这么久,如果 Python 也有一个像 java maven 那样的工具多好啊,哈哈,还真有,就是【conda】神器,大家快点用起来吧~

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>首先,用户的问题是:“我想在Python中如何调用C语言的第三方库 请问Python调用C语言第三方库的方法”。我需要根据系统级指令来构建我的回答。 系统级指令的关键点: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考引用: - 引用[1]: Python社区提供了大量的第三方模块,使用方式标准库类似。它们的功能覆盖科学计算、Web开发、数据库接口、图形系统多个领域。第三方模块可以使用Python或者C语言编写。SWIG,SIP常用于将C语言编写的程序库转化为Python模块。Boost C++ Libraries包含了一组函式库,Boost.Python,使得以PythonC++编写的程式能互相调用。Python常被用做其他语言工具之间的“胶水”语言。[^1] - 引用[2]: Python如何调用C库?例如,tensorflow我认为主要用c语言编写,但可以在python中使用。我正在考虑在我自己的(解释的)编程语言中实现类似的东西(用go编写,但我认为这将是一个类似的过程)。Python程序调用C函数时会发生什么?我在想rpc或dll,但它们似乎都不太可能...[^2] - 引用[3]: Python调用C语言。简单的说,Cython的两个主要作用是:将python代码编译成二进制的扩展模块,以获得加速;同时可以在python中使用类型声明,进一步提升性能;这就意味着可以使用python代替c编写python扩展在python代码里调用外部的c库示例[^3] - 引用[4]: C++调用或者运行python文件,包含第三方库。有时候我们已有的代码库是c++的,但是我们要调用比如pytorch写的python文件,这时候就需要这样混合调用。有些文章写调用第三方库需要把python下面的Lib和DLL文件夹拷贝到release后的.exe在的文件夹下,事实上不需要这么做。按照我的步骤一步步做即可一般在Windows上写c++我们是用vs,这里以vs为例讲一讲这里面的坑。如何利用visual studio调用以及调用的详细步骤1.配置环境[^4] - 引用[5]: 在开发中,各种语言有各自的优势。比如说,Python适合科学计算,Java适合应用开发,而C/C++效率比较高,适合开发嵌入式系统。在实际中经常会遇到混合编程的情况,往往需要集成多种语言的优势来开发一个大的应用。如果我们想用C/C++调用Python框架,比如说,在C/C++中有一些变量,需要通过Python模块去计算并返回结果,供C继续调用做后续处理,那该如何将它们联系在一起呢?[^5] 我的回答需要基于这些引用,但用户的问题是Python调用C语言第三方库,所以我应该聚焦在引用[3]和[2]上。 关键方法: - 从引用[3]:Cython可以用于调用外部C库。 - 从引用[2]:讨论Python如何调用C库。 - 其他引用可能相关,但引用[4]是关于C++调用Python,引用[5]是关于C/C++调用Python,这用户问题相反。用户是Python调用C。 所以,主要方法: 1. 使用Cython:Cython允许Python代码调用C函数。 2. 使用ctypes:Python标准库中的ctypes模块,用于加载共享库(如DLL或so文件)并调用其中的函数。 3. 使用cffi:另一个库,用于调用C代码。 4. 使用SWIG或SIP:如引用[1]所述,用于将C库包装成Python模块。 5. 使用Boost.Python:如引用[1]所述,但Boost.Python是针对C++的,用户是调用C,所以可能不直接相关。 用户问题指定“C语言的第三方库”,所以我需要解释如何加载和调用C库。 步骤: 1. 确保C库可用:有共享库文件(如.dll或.so)。 2. 在Python中使用适当的模块加载库。 3. 定义函数签名(参数和返回类型)。 4. 调用函数。 在回答中,我需要结构清晰: - 介绍方法。 - 分步解释。 - 给出简单示例。 - 确保使用中文。 - 添加引用标识。 - 生成相关问题。 最后,添加相关问题部分。 数学表达式:用户问题不涉及数学,所以可能不需要数学表达式。但如果我提到任何数学概念,如函数签名,我可以用行内数学。 例如,如果我说函数签名如$f(x) = x^2$,但这里可能不需要。 回答结构: 1. 简介:解释Python调用C库的原因和常见方法。 2. 详细方法: - 使用ctypes - 使用Cython - 使用cffi - 使用SWIG 3. 示例代码。 4. 注意事项。 5. 相关问题。 引用添加:在相关段落末尾添加引用标识。</think>### Python调用C语言第三方库的方法 在Python中调用C语言编写的第三方库是一种常见的混合编程方式,可以充分利用C的高性能优势(如计算密集型任务)[^1][^5]。Python提供了多种方法来实现这一目标,包括使用标准库模块(如`ctypes`)或第三方工具(如`Cython`)。下面我将逐步解释几种主要方法,确保结构清晰,便于理解。这些方法都基于将C库编译为共享库(如`.dll`或`.so`文件),然后在Python中加载和调用。 #### 1. **使用`ctypes`模块(Python标准库)** `ctypes`是Python内置的模块,无需额外安装,适合调用简单的C函数。它通过加载共享库文件并定义函数签名来实现调用。 **步骤:** - **步骤1:确保C库可用** 将C库编译为共享库。例如,假设有一个简单的C文件`libexample.c`: ```c #include <stdio.h> int add(int a, int b) { return a + b; } ``` 编译为共享库(Linux用`gcc -shared -o libexample.so libexample.c`,Windows用`gcc -shared -o libexample.dll libexample.c`)。 - **步骤2:在Python中加载库并调用函数** 使用`ctypes.CDLL`加载库,并指定函数参数和返回类型。 ```python import ctypes # 加载共享库 lib = ctypes.CDLL('./libexample.so') # Linux/macOS; Windows用 './libexample.dll' # 定义函数签名 lib.add.argtypes = [ctypes.c_int, ctypes.c_int] # 参数类型 lib.add.restype = ctypes.c_int # 返回类型 # 调用函数 result = lib.add(3, 4) print(result) # 输出: 7 ``` **注意事项:** - 确保路径正确,避免文件找不到错误。 - 对于复杂数据类型(如结构体),需使用`ctypes.Structure`定义。 - `ctypes`适合简单调用,但类型转换可能繁琐[^2][^3]。 引用`ctypes`的简便性使其成为快速集成的首选[^3]。 #### 2. **使用`Cython`(第三方工具)** `Cython`是一个强大的工具,它允许Python代码直接调用C函数,并能将Python代码编译为C扩展模块,提升性能[^3]。它特别适合需要高性能或复杂C接口的场景。 **步骤:** - **步骤1:安装Cython** 通过pip安装:`pip install cython` - **步骤2:创建Cython包装文件** 假设C库头文件为`example.h`,共享库为`libexample.so`。创建一个`.pyx`文件(如`wrapper.pyx`): ```cython # wrapper.pyx cdef extern from "example.h": int add(int a, int b) # 声明C函数 def py_add(a: int, b: int) -> int: return add(a, b) # Python可调用函数 ``` - **步骤3:编译为Python扩展** 创建`setup.py`文件: ```python from distutils.core import setup from Cython.Build import cythonize setup(ext_modules=cythonize("wrapper.pyx")) ``` 运行编译:`python setup.py build_ext --inplace` - **步骤4:在Python中导入使用** ```python from wrapper import py_add print(py_add(3, 4)) # 输出: 7 ``` **注意事项:** - `Cython`需要C编译器(如GCC或Visual Studio),在Windows上需配置环境变量[^4]。 - 它支持类型声明和优化,适合大型项目[^3]。 `Cython`通过简化C接口调用,提高了开发效率[^3]。 #### 3. **使用`cffi`(第三方库)** `cffi`(C Foreign Function Interface)是另一个流行工具,语法更Pythonic,适合动态加载C库。 **步骤:** - **步骤1:安装cffi** `pip install cffi` - **步骤2:在Python中定义并调用C函数** ```python from cffi import FFI ffi = FFI() # 声明C函数签名 ffi.cdef("int add(int a, int b
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值