Python: virtualenv - gtk-2.0 - PullRequest
       3

Python: virtualenv - gtk-2.0

7 голосов
/ 27 августа 2010

Чтобы добавить gtk-2.0 к моему virtualenv, я сделал следующее:

$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv
$ cd myvirtualenv
$ source bin/activate
$ cd lib/python2.6/
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/ 

Virtualenv в Ubuntu без пакетов сайтов

Теперь в интерпретаторе Python, когда я выполняю импорт gtk, он говорит: нет модуля с именем gtk. Когда я запускаю интерпретатор с sudo, он работает.

Любая причина, почему мне нужно использовать sudo и есть ли способ предотвратить это?

Обновление:
Забыл упомянуть, что cairo и pygtk работают, но это не то, что мне нужно.

Update2:
Здесь каталог, чтобы показать, что я не сумасшедший. http://www.friendly -stranger.com / фото / symlink.jpg

Ответы [ 5 ]

10 голосов
/ 27 августа 2010

sudo python импортирует его просто отлично, потому что этот интерпретатор не использует вашу виртуальную среду.Так что не делайте этого.

Вы ссылаетесь только на один из необходимых предметов.Сделайте остальные, упомянутые в ответе на вопрос, который вы также связали.

(Файл pygtk.pth имеет особое значение, поскольку он говорит Python фактически поместить тот каталог, который вы связали, в путь python)

Обновление

Поместите все это в $ VIRTUALENV / lib / python2.6 / site-packages / , а не в каталог выше.

Похоже на.pth файлы не читаются из этого каталога - только из пакетов сайта

6 голосов
/ 08 марта 2012

Это работает для меня (Ubuntu 11.10):

как только вы активируете свой каталог virtualenv, убедитесь, что 'dist-packages' существует:

mkdir -p lib/python2.7/dist-packages/

Затем создайте ссылки:

Для GTK2:

ln -s /usr/lib/python2.7/dist-packages/glib/ lib/python2.7/dist-packages/
ln -s /usr/lib/python2.7/dist-packages/gobject/ lib/python2.7/dist-packages/
ln -s /usr/lib/python2.7/dist-packages/gtk-2.0* lib/python2.7/dist-packages/
ln -s /usr/lib/python2.7/dist-packages/pygtk.pth lib/python2.7/dist-packages/
ln -s /usr/lib/python2.7/dist-packages/cairo lib/python2.7/dist-packages/

Для GTK3:

ln -s /usr/lib/python2.7/dist-packages/gi lib/python2.7/dist-packages/
1 голос
/ 16 июня 2013

Не забудьте добавить ссылку на pygtk.py

ln -s /usr/lib/python2.7/dist-packages/pygtk.py lib/python2.7/dist-packages/
0 голосов
/ 27 октября 2018

Если не требуется, чтобы системные пакеты Python не использовались в виртуальной среде, я бы установил apt install python-gtk2 (Ubuntu), а затем создал виртуальную среду с:

virtualenv --system-site-packages .

Таким образом, вы не загрязняете системную среду установкой pip в виртуальной среде, а повторно используете все из системы. Особенно пигтк.

0 голосов
/ 14 декабря 2014

В системах Linux на основе Debian (Ubuntu, Mint) вы можете просто установить пакет ruamel.venvgtk , который я поместил в PyPI. Он создаст соответствующие ссылки в вашем virtualenv во время установки (если их еще нет).

Более подробное объяснение можно найти в этом ответе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...