如何将“python3-autopilot”与“python3 -m venv venv”一起使用?

如何将“python3-autopilot”与“python3 -m venv venv”一起使用?

我该如何python3-autopilot使用python3 -m venv venv

我已经安装了python3-autopilot(Ubuntu 的“轻松编写和运行集成测试的实用程序”)sudo apt-get install -y python3-autopilot

尽管我更喜欢使用python3-autopilot来安装pip install

笔记:autopilot在 PyPI 上 不是 python3-autopilot

  • python3-autopilot是版本 1.6.1autopilot在 PyPI 上只有 0.3.0 版本并且似乎是一个完全不同的包。

  • python3 -m venv venv和之前. ./venv/bin/activate,我可以from autopilot.input import Mouse,但没有来自我的虚拟环境的包。

  • 之后. ./venv/bin/activatefrom autopilot.input import MouseModuleNotFoundError: No module named 'autopilot'

答案1

该包的 README 中写道

Autopilot 无法在 python 虚拟环境中构建,因为它需要一些 上没有的包pypi。相反,要么使用源代码树中的 autopilot,要么构建 debian 包。

因此,似乎该软件包是故意不从 PyPI 提供的,因此pip install默认情况下无法使用。也许有一种方法可以使用自定义源,我不确定,但“从源代码树使用”选项似乎对我有用:

  1. git clone -b master https://git.launchpad.net/autopilot进入你的项目目录。
  2. 将实际的包目录上移(您实际需要的 Python 文件):
    • mv autopilot/ autopilot-src/
    • mv autopilot-src/autopilot/ ./autopilot/
  3. 激活你的venv。假设它在当前目录中:. venv/bin/activate
  4. 安装一些必需的依赖项:pip install psutil decorator testtools。(我通过反复试验确定了这些。)
  5. 现在可以使用该包了。在python我可以做from autopilot.input import Mouse

笔记:

  • 尽管我已经测试过这一点,直到成功导入我的包venv,但我不能说在实际使用它时不会出现错误。
    • 您有点违背了此包的预期环境,它似乎是 Ubuntu/Debian 系统 Python 环境。请注意,该apt包有许多其他依赖项,甚至非 Python 依赖项。
    • 就这一点而言,我在sudo apt install python3-autopilot上述步骤之前确实这样做了,并且有可能安装了一些依赖项,软件包仍将依赖这些依赖项。即使如此,venv我们也无法保证软件包不需要某些系统(非 Python)依赖项。
  • 这种方法意味着您不能简单地将包添加到您的虚拟环境中requirements.txt,因此如果您希望其他人能够重现您的环境,您必须记录特殊说明。

答案2

您可以使用venv的参数--system-site-packages来使用apt安装的自动驾驶仪。

python3 -m venv --system-site-packages venv
. venv/bin/activate
python
>>> from autopilot.input import Mouse
>>>

相关内容