Как заставить мой 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
файл из него, чтобы он видел системные пакеты.