Debian 模块中的 PyQt5 依赖项

PyQt5 dependency in a module on Debian

我有一个 Python 模块和一个使用 PyQt5 的 __main__。我已经在 Debian Buster 机器上安装了 PyQt5:

apt-get install python3-pyqt5

__main__ 程序 运行 如果我执行

python3 mymodule/__main__.py

来自源目录。现在我已经将模块安装到 python:

python3 setup.py install

成功了。 setup.py 列出了对 pyqt5 的依赖:

setup(
    # ...
    install_requires=['PyQt5'],
    entry_points={"gui_scripts": ["mymodule = mymodule.__main__:main"]},

安装程序创建了一个脚本 /usr/local/bin/mymodule。当我 运行 时,我收到一条错误消息:

pkg_resources.DistributionNotFound: The 'PyQt5' distribution was not found and is required by mymodule

我错过了什么?

编辑:尝试通过 pip 安装 pyqt5,出现以下错误:

seva@sandbox:~$ sudo pip3 install pyqt5
Collecting pyqt5
Using cached  https://files.pythonhosted.org/packages/3a/fb/eb51731f2dc7c22d8e1a63ba88fb702727b324c6352183a32f27f73b8116/PyQt5-5.14.1.tar.gz
Installing build dependencies ... done
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.7/tokenize.py", line 447, in open
    buffer = _builtin_open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-install-26kj5hrc/pyqt5/setup.py'

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-26kj5hrc/pyqt5/

OS 级别的包管理器被设计为在自身内部是一致的。但它们并不是为了与语言包管理器进行互操作而设计的。 apt-get-installed python3-pyqt5 可以被其他 Debian 软件包识别但不能被 pip/setuptools.

因此,要么将您的包转换为 .deb(例如,使用 stdeb),将依赖项设置为 python3-pyqt5 并使用 apt/[=13 安装它=]/dpkg。或者你使用 pip:

安装所有东西
pip install pyqt5
pip install .  # to install your package

如果您的依赖项在包中正确声明,后一个命令应该足够了 — pip 将 运行 前者本身。

PS。另外请考虑 virtualenvpip 安装的软件包与系统安装的软件包分开。 virtualenv 本身可以是系统安装的或用户安装的:

apt install python3-virtualenv

pip install [--user] virtualenv