如何解决C4365:“返回”:从“ std :: size_t”到“ Py_ssize_t”的转换,有符号/无符号不匹配错误
在命令提示符下尝试在本地计算机上安装pyodbc时出现奇怪的错误。可能与Visual Studio有关的某种转换错误?任何帮助,将不胜感激。我正在运行Python 3.8.2。
C:\Users\****.****\OneDrive\PythonProjects\venv\Scripts>pip install pyodbc
Collecting pyodbc
Using cached https://files.pythonhosted.org/packages/81/0d/bb08bb16c97765244791c73e49de9fd4c24bb3ef00313aed82e5640dee5d/pyodbc-4.0.30.tar.gz
Installing collected packages: pyodbc
Running setup.py install for pyodbc ... error
Complete output from command C:\Users\****.****\OneDrive\PythonProjects\venv\Scripts\python.exe -u -c "import setuptools,tokenize;__file__='C:\\Users\\****.****\\AppData\\Local\\Temp\\pip-install-4nnxqm8v\\pyodbc\\setup.py';f=getattr(tokenize,'open',open)(__file__);code=f.read().replace('\r\n','\n');f.close();exec(compile(code,__file__,'exec'))" install --record C:\Users\****.****\AppData\Local\Temp\pip-record-9ksqmk4o\install-record.txt --single-version-externally-managed --compile --install-headers C:\Users\****.****\OneDrive\PythonProjects\venv\include\site\python3.8\pyodbc:
running install
running build
running build_ext
building 'pyodbc' extension
creating build
creating build\temp.win32-3.8
creating build\temp.win32-3.8\Release
creating build\temp.win32-3.8\Release\src
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DPYODBC_VERSION=4.0.30 -IC:\Users\****.****\OneDrive\PythonProjects\venv\include -IC:\Users\****.****\AppData\Local\Programs\Python\Python38-32\include -IC:\Users\****.****\AppData\Local\Programs\Python\Python38-32\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\8.1\include\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\winrt" /EHsc /Tpsrc\buffer.cpp /Fobuild\temp.win32-3.8\Release\src\buffer.obj /Wall /wd4514 /wd4820 /wd4668 /wd4711 /wd4100 /wd4127 /wd4191 /d2FH4-
buffer.cpp
c:\users\****.****\appdata\local\programs\python\python38-32\include\cpython/abstract.h(77): warning C4365: 'return': conversion from 'std::size_t' to 'Py_ssize_t',signed/unsigned mismatch
fatal error C1007: unrecognized flag '-FH4-' in 'p2'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 1
----------------------------------------
Command "C:\Users\****.****\OneDrive\PythonProjects\venv\Scripts\python.exe -u -c "import setuptools,'exec'))" install --record C:\Users\****.****\AppData\Local\Temp\pip-record-9ksqmk4o\install-record.txt --single-version-externally-managed --compile --install-headers C:\Users\****.****\OneDrive\PythonProjects\venv\include\site\python3.8\pyodbc" failed with error code 1 in C:\Users\****.****\AppData\Local\Temp\pip-install-4nnxqm8v\pyodbc\
解决方法
您在问题标题中引用的消息只是警告。
警告C4365:“返回”:从“ std :: size_t”转换为“ Py_ssize_t”,有符号/无符号不匹配
在Windows上从源代码构建pyodbc时,这种警告并不罕见。
实际错误是
严重错误C1007:“ p2”中无法识别的标志“ -FH4-”
错误:命令“ C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ BIN \ cl.exe”失败,退出状态为1
那是因为您的Visual Studio版本太旧,无法为Python 3.8构建pyodbc。根据...
…需要Visual Studio 2019(版本16),但您似乎拥有Visual Studio 2015(版本14)。
奇怪的是,当pyodbc 4.0.30已经具有用于32位Python 3.8的Windows操作系统时,pip
试图从源代码构建
pyodbc-4.0.30-cp38-cp38-win32.whl
您可以尝试下载该文件然后运行
pip install pyodbc-4.0.30-cp38-cp38-win32.whl
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。