简体   繁体   English

无法在 python 3.8 上的 Windows 10 中安装 PyBluez

[英]Unable to install PyBluez in windows 10 on python 3.8

When I try to install PyBluez on my PC, it displays to an error as shown below.当我尝试在我的 PC 上安装 PyBluez 时,它显示如下所示的错误。 I have installed a C++ compiler.我已经安装了 C++ 编译器。 I don't know what the problem is and how to fix it.我不知道问题是什么以及如何解决它。 I even tried to download a zip from their Github and then tried to install I used pip setup.py install it installed, but I wasn't able to import the bluetooth library.我什至尝试从他们的 Github 下载一个 zip,然后尝试安装我使用pip setup.py install it installed,但我无法导入蓝牙库。 Can anyone help?任何人都可以帮忙吗?

  Using cached PyBluez-0.23.tar.gz (97 kB)
Using legacy 'setup.py install' for pybluez, since package 'wheel' is not installed.
Installing collected packages: pybluez
    Running setup.py install for pybluez ... error
    ERROR: Command errored out with exit status 1:
     command: 'e:\python\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\itsgu\\AppData\\Local\\Temp\\pip-install-te3cdwvh\\pybluez\\setup.py'"'"'; __file__='"'"'C:\\Users\\itsgu\\AppData\\Local\\Temp\\pip-install-te3cdwvh\\pybluez\\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\itsgu\AppData\Local\Temp\pip-record-gfwpefis\install-record.txt' --single-version-externally-managed --compile --install-headers 'e:\python\Include\pybluez'
         cwd: C:\Users\itsgu\AppData\Local\Temp\pip-install-te3cdwvh\pybluez\
    Complete output (41 lines):
    running install
    running build
    running build_py
    creating build
    creating build\lib.win-amd64-3.8
    creating build\lib.win-amd64-3.8\bluetooth
    copying bluetooth\ble.py -> build\lib.win-amd64-3.8\bluetooth
    copying bluetooth\bluez.py -> build\lib.win-amd64-3.8\bluetooth
    copying bluetooth\btcommon.py -> build\lib.win-amd64-3.8\bluetooth
    copying bluetooth\macos.py -> build\lib.win-amd64-3.8\bluetooth
    copying bluetooth\msbt.py -> build\lib.win-amd64-3.8\bluetooth
    copying bluetooth\widcomm.py -> build\lib.win-amd64-3.8\bluetooth
    copying bluetooth\__init__.py -> build\lib.win-amd64-3.8\bluetooth
    e:\python\lib\site-packages\setuptools\lib2to3_ex.py:36: SetuptoolsDeprecationWarning: 2to3 support is deprecated. If the project still requires Python 2 support, please migrate to a single-codebase solution or employ an independent conversion process.
      warnings.warn(
    Fixing build\lib.win-amd64-3.8\bluetooth\ble.py build\lib.win-amd64-3.8\bluetooth\bluez.py build\lib.win-amd64-3.8\bluetooth\btcommon.py build\lib.win-amd64-3.8\bluetooth\macos.py build\lib.win-amd64-3.8\bluetooth\msbt.py build\lib.win-amd64-3.8\bluetooth\widcomm.py build\lib.win-amd64-3.8\bluetooth\__init__.py
    Skipping optional fixer: buffer
    Skipping optional fixer: idioms
    Skipping optional fixer: set_literal
    Skipping optional fixer: ws_comma
    Fixing build\lib.win-amd64-3.8\bluetooth\ble.py build\lib.win-amd64-3.8\bluetooth\bluez.py build\lib.win-amd64-3.8\bluetooth\btcommon.py build\lib.win-amd64-3.8\bluetooth\macos.py build\lib.win-amd64-3.8\bluetooth\msbt.py build\lib.win-amd64-3.8\bluetooth\widcomm.py build\lib.win-amd64-3.8\bluetooth\__init__.py
    Skipping optional fixer: buffer
    Skipping optional fixer: idioms
    Skipping optional fixer: set_literal
    Skipping optional fixer: ws_comma
    running build_ext
    building 'bluetooth._msbt' extension
    creating build\temp.win-amd64-3.8
    creating build\temp.win-amd64-3.8\Release
    creating build\temp.win-amd64-3.8\Release\msbt
    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I.\port3 -Ie:\python\include -Ie:\python\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" /Tcmsbt\_msbt.c /Fobuild\temp.win-amd64-3.8\Release\msbt\_msbt.obj
    _msbt.c
    msbt\_msbt.c(145): warning C4244: '=': conversion from 'SOCKET' to 'int', possible loss of data
    msbt\_msbt.c(222): warning C4244: '=': conversion from 'SOCKET' to 'int', possible loss of data
    msbt\_msbt.c(402): warning C4244: '=': conversion from 'SOCKET' to 'int', possible loss of data
    msbt\_msbt.c(415): warning C4244: 'initializing': conversion from 'SOCKET' to 'int', possible loss of data
    msbt\_msbt.c(635): warning C4244: 'initializing': conversion from 'SOCKET' to 'int', possible loss of data
    msbt\_msbt.c(807): warning C4311: 'type cast': pointer truncation from 'HANDLE' to 'unsigned long'
    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:e:\python\libs /LIBPATH:e:\python\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64" WS2_32.lib Irprops.lib /EXPORT:PyInit__msbt build\temp.win-amd64-3.8\Release\msbt\_msbt.obj /OUT:build\lib.win-amd64-3.8\bluetooth\_msbt.cp38-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.8\Release\msbt\_msbt.cp38-win_amd64.lib
    LINK : fatal error LNK1181: cannot open input file 'Irprops.lib'
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.27.29110\\bin\\HostX86\\x64\\link.exe' failed with exit status 1181
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'e:\python\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\itsgu\\AppData\\Local\\Temp\\pip-install-te3cdwvh\\pybluez\\setup.py'"'"'; __file__='"'"'C:\\Users\\itsgu\\AppData\\Local\\Temp\\pip-install-te3cdwvh\\pybluez\\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\itsgu\AppData\Local\Temp\pip-record-gfwpefis\install-record.txt' --single-version-externally-managed --compile --install-headers 'e:\python\Include\pybluez' Check the logs for full command output.```

This may be too late, but I faced the same issue.这可能为时已晚,但我遇到了同样的问题。 I will provide below two directions for you to take to make PyBluez work.我将提供以下两个方向供您使用,以使 PyBluez 工作。 This is more of a workaround, since I was not able to resolve all PyBluez issues on my own system using Python 3.9.x.这更像是一种解决方法,因为我无法使用 Python 3.9.x 在自己的系统上解决所有 PyBluez 问题。 In both cases you are required to change python version.在这两种情况下,您都需要更改 python 版本。 You can pick what works for you and your needs.您可以选择适合您和您的需求的方法。

ALTERNATIVE 1: Using Python 3.9.x Sockets备选方案 1:使用 Python 3.9.x 套接字

Out of the box, Python 3.9.x can connect to Bluetooth using sockets.开箱即用,Python 3.9.x 可以使用套接字连接到蓝牙。

import socket
sock = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
sock.connect((host, port))

ALTERNATIVE 2: Use Python 3.7.x with pyenv and pipenv备选方案 2:将 Python 3.7.x 与 pyenv 和 pipenv 一起使用

1. Dependencies (also ensure your paths are set properly) 1. 依赖关系(还要确保你的路径设置正确)

  • pipenv管道
  • pyenv-win pyenv-win

2. Check the latest version of Python 3.7 available. 2. 检查可用的 Python 3.7 的最新版本。 Most likely will be 3.7.7.最有可能是 3.7.7。

pyenv install --list

3. Install python using pyenv 3.使用pyenv安装python

pyenv install 3.7.7

4. Go to your project's folder and create a virtual environment using the python version installed 4.进入你的项目文件夹并使用安装的python版本创建一个虚拟环境

pipenv --python 3.7.7

5. Clone and Build Pybluez from source 5. 从源代码克隆和构建 Pybluez

git clone https://github.com/pybluez/pybluez.git 
cd pybluez/
python setup.py build

6. Install PyBluez within your virtual environment 6. 在你的虚拟环境中安装 PyBluez

pipenv shell
python setup.py install

From there, you should be able run any projects within this virtual environment using python 3.7.7, which is able to properly build and install PyBluez.从那里,您应该能够使用 python 3.7.7 在这个虚拟环境中运行任何项目,它能够正确构建和安装 PyBluez。 I have not found any other methods of making PyBluez install as of now.到目前为止,我还没有找到任何其他安装 PyBluez 的方法。

只需安装正确的版本 pip install pybluez2

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM