2015-10-12 2 views
5

Я пытаюсь использовать Travis CI для запуска тестов моего кода на Python.Как заставить Python видеть модуль, установленный через apt?

Мой проект нуждается в модуле dbus, и он недоступен в PyPi, поэтому я должен установить его с помощью apt.

Проблема в том, что тесты не выполняются с ImportError: нет модуля с именем «dbus». Это довольно странно, потому что я могу видеть в отчете об успешной установке необходимых пакетов. Вот мой .travis.yml и пример Travis log.

Я что-то не так?

+0

Это интересно. Вы знаете, что я подозреваю? Это всего лишь подозрение. Трэвис настраивает virtualenv, и ваш apt-get устанавливается за пределы virtualenv. Поэтому он никогда не увидит ваш пакет. – idjaw

+0

Но. Я уверен, что есть решение, если это так. Я пользуюсь Трэвисом. Позвольте мне кое-что увидеть. :) – idjaw

ответ

2

Из журнала travis, который вы опубликовали, все ваши пакеты устанавливаются в виртуальной среде.

Виртуальная среда создается в чистом состоянии - так он не имеет каких-либо ссылок на системные библиотеки, на самом деле он утверждает, поэтому в documentation:

CI Environment uses separate virtualenv instances for each Python version. System Python is not used and should not be relied on. If you need to install Python packages, do it via pip and not apt.

If you decide to use apt anyway, note that Python system packages only include Python 2.7 libraries on Ubuntu 12.04 LTS. This means that the packages installed from the repositories are not available in other virtualenvs even if you use the –system-site-packages option.

Я считаю, это объясняет вашу проблему:

  1. виртуальные среды изолированы и не имеют ссылки на системные пакеты.
  2. Даже если вы используете apt, это , ограниченное Python 2.7, и вы пытаетесь установить пакет python3-.