Как заставить мой virtualenv увидеть этот скомпилированный модуль установленным на системном уровне?

Я установил пакет python-gconf в Ubuntu 12.04 и поиграл с ним: это python-привязка к инструменту настройки gnome, и для него нет пакета pypi.

Как только я создал virtualenv (без --no-site-packages), любая попытка импорта gconf приведет к ImportError,

gconf Модуль отлично работает на системном уровне, но не в виртуальной среде. Я исследовал и открыл python-gconf.deb, убедил меня, что это просто бинарный файл gconf.so.

Поиск его говорит мне, что он был установлен в /home/lib/python2.7/dist-packages/gtk-2.0/gconf.so

Я попытался заставить руки Python:

sudo ln -s /usr/lib/python2.7/dist-packages/gtk-2.0/gconf.so ~/.virtualenvs/appetizer/lib/python2.7/site-packages/

Но это только привело к:

>>> import gconf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: could not import gobject (error was: 'No module named gobject')

Я предполагаю, что это очень зависит от GTK.

2 ответа

Решение

Вы должны создать свой virtualenv, используя --system-site-packages возможность сделать все системные пакеты видимыми. Символическое связывание внешних пакетов в структуру virtualenv также работает для большинства ситуаций, когда вам нужен только один внешний пакет.

Если вы уже создали свою виртуальную среду, просто удалите no-global-site-packages.txt файл из него, чтобы он видел системные пакеты.

Другие вопросы по тегам