pip安装pyTsetlinMachine失败及手动导入报错求助
pyTsetlinMachine安装与导入问题
1. pip安装失败
执行pip install pyTsetlinMachine时触发编译错误,核心问题是Windows系统缺少类Unix环境的头文件,关键报错:
pyTsetlinMachine/IndexedTsetlinMachine.c(32): fatal error C1083: Cannot open include file: 'sys/time.h': No such file or directory
完整错误日志如下:
WARNING: Ignoring invalid distribution ~yspark (C:\Users\Dell\AppData\Local\Programs\Python\Python311\Lib\site-packages) Collecting PyTsetlinMachine Using cached pyTsetlinMachine-0.6.6.tar.gz (25 kB) Preparing metadata (setup.py) ... done Building wheels for collected packages: PyTsetlinMachine Building wheel for PyTsetlinMachine (setup.py) ... error error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully. │ exit code: 1 ╰─> [26 lines of output] running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-cpython-311 creating build\lib.win-amd64-cpython-311\pyTsetlinMachine copying pyTsetlinMachine\tm.py -> build\lib.win-amd64-cpython-311\pyTsetlinMachine copying pyTsetlinMachine\tools.py -> build\lib.win-amd64-cpython-311\pyTsetlinMachine copying pyTsetlinMachine\__init__.py -> build\lib.win-amd64-cpython-311\pyTsetlinMachine running build_ext building 'libTM' extension creating build\temp.win-amd64-cpython-311 creating build\temp.win-amd64-cpython-311\Release creating build\temp.win-amd64-cpython-311\Release\pyTsetlinMachine "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IpyTsetlinMachine -IC:\Users\Dell\AppData\Local\Programs\Python\Python311\include -IC:\Users\Dell\AppData\Local\Programs\Python\Python311\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" /TcpyTsetlinMachine/ConvolutionalTsetlinMachine.c /Fobuild\temp.win-amd64-cpython-311\Release\pyTsetlinMachine/ConvolutionalTsetlinMachine.obj ConvolutionalTsetlinMachine.c pyTsetlinMachine/ConvolutionalTsetlinMachine.c(175): warning C4013: '__builtin_popcount' undefined; assuming extern returning int "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IpyTsetlinMachine -IC:\Users\Dell\AppData\Local\Programs\Python\Python311\include -IC:\Users\Dell\AppData\Local\Programs\Python\Python311\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" /TcpyTsetlinMachine/EmbeddingTsetlinMachine.c /Fobuild\temp.win-amd64-cpython-311\Release\pyTsetlinMachine/EmbeddingTsetlinMachine.obj EmbeddingTsetlinMachine.c pyTsetlinMachine/EmbeddingTsetlinMachine.c(161): warning C4244: '=': conversion from 'double' to 'unsigned int', possible loss of data pyTsetlinMachine/EmbeddingTsetlinMachine.c(159): warning C4244: 'initializing': conversion from 'double' to 'unsigned int', possible loss of data pyTsetlinMachine/EmbeddingTsetlinMachine.c(365): warning C4244: 'return': conversion from 'double' to 'float', possible loss of data "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IpyTsetlinMachine -IC:\Users\Dell\AppData\Local\Programs\Python\Python311\include -IC:\Users\Dell\AppData\Local\Programs\Python\Python311\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" /TcpyTsetlinMachine/IndexedTsetlinMachine.c /Fobuild\temp.win-amd64-cpython-311\Release\pyTsetlinMachine/IndexedTsetlinMachine.obj IndexedTsetlinMachine.c pyTsetlinMachine/IndexedTsetlinMachine.c(32): fatal error C1083: Cannot open include file: 'sys/time.h': No such file or directory error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.36.32532\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for PyTsetlinMachine Running setup.py clean for PyTsetlinMachine Failed to build PyTsetlinMachine ERROR: Could not build wheels for PyTsetlinMachine, which is required to install pyproject.toml-based projects
2. 手动解压导入失败
下载v0.6.0版本源码包并解压到site-packages后,执行import pyTsetlinMachine.tm.MultiClassTsetlinMachine2D时,出现以下错误:
--------------------------------------------------------------------------- OSError Traceback (most recent call last) Cell In[21], line 16 13 import cv2 15 # For Tsetlin Machine ---> 16 import pyTsetlinMachine.tm.MultiClassTsetlinMachine2D File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyTsetlinMachine\tm.py:29 26 import os 28 this_dir, this_filename = os.path.split(__file__) ---> 29 _lib = np.ctypeslib.load_library('libTM', os.path.join(this_dir, "..")) 31 class CEmbeddingTsetlinMachine(C.Structure): 32 None File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\ctypeslib.py:161, in load_library(libname, loader_path) 159 raise 160 ## if no successful return in the libname_ext loop: ---> 161 raise OSError("no file with expected extension") OSError: no file with expected extension
解决方案
- 修复Windows头文件依赖:
sys/time.h是类Unix系统专属头文件,Windows无此文件。找到源码中的IndexedTsetlinMachine.c,将头部的#include <sys/time.h>替换为:#ifdef _WIN32 #include <windows.h> #include <time.h> #else #include <sys/time.h> #endif - 手动编译生成动态库:在修改后的源码目录下执行命令:
编译完成后会生成python setup.py build_ext --inplacelibTM.pyd(Windows平台),将整个pyTsetlinMachine文件夹复制到Python的site-packages目录中。 - 使用WSL环境安装:若不想修改源码,可直接在Windows子系统Linux(WSL)中执行
pip install pyTsetlinMachine,类Unix环境原生支持sys/time.h,编译不会出错。
内容的提问来源于stack exchange,提问作者Rohit Burman
相关产品推荐
相关产品推荐

