如何在virtualenv中安装python3-gi?

csga3l58  于 2023-04-08  发布在  Python
关注(0)|答案(7)|浏览(122)

我正在跟踪Python GTK+ 3 Tutorial,并试图在virtualenv中运行一个工作安装。我已经通过Ubuntu包管理器安装了python3-gi。事情看起来像这样:

:~$ mkvirtualenv py3 --python=/usr/bin/python3
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in py3/bin/python3
Also creating executable in py3/bin/python
Installing setuptools, pip...python
done.
(py3):~$ python
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'gi'
>>> 
(py3):~$ deactivate
:~$ /usr/bin/python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
>>>

正如您所看到的,python3-gi显然在virtualenv中不可用,但我不确定如何安装它,因为python3-gi是通过我的包管理器安装的,而不是使用pip。

amrnrhlw

amrnrhlw1#

现在可以使用vext解决这个问题。Vext允许您在虚拟环境中安装软件包,这些软件包可以单独访问您的系统软件包。要访问gi,请执行以下操作:

pip install vext
pip install vext.gi
bq8i3lrv

bq8i3lrv2#

更新2018 - Debian Stretch

1.安装GTK+ 3 / GIR。

apt install libcairo2-dev libgirepository1.0-dev gir1.2-gtk-3.0

1.创建虚拟环境。

python3 -mvenv venv

1.安装pygobjectpycairo应该作为依赖项)。

venv/bin/pip install pygobject

更新2018 - macOS

1.使用Homebrew安装GTK+ 3和Gobject Introspection。

brew install gtk+3 gobject-introspection

1.创建并激活虚拟环境。

python3 -mvenv venv

1.安装pygobjectpycairo应该作为依赖项)。

PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig ARCHFLAGS="-arch x86_64" venv/bin/pip install pygobject

原答复

这就是我在OS X 10.11上的Python 3.5虚拟环境中获得GTK+ 3的方法。
1.使用Homebrew安装GTK+ 3。

brew install gtk+3

1.创建并激活虚拟环境。

pyvenv-3.5 venv
source venv/bin/activate
cd venv

1.在虚拟环境中安装pycairo

export PKG_CONFIG_PATH=$VIRTUAL_ENV/lib/pkgconfig

curl -L https://cairographics.org/releases/pycairo-1.10.0.tar.bz2 | tar xj
cd pycairo-1.10.0
export ARCHFLAGS='-arch x86_64'

python waf configure --prefix=$VIRTUAL_ENV # It's ok, this will fail.
sed -i '' '154s/data={}/return/' .waf3-1.6.4-*/waflib/Build.py # Bugfix: https://bugs.freedesktop.org/show_bug.cgi?id=76759
python waf configure --prefix=$VIRTUAL_ENV # Now it should configure.
python waf build
python waf install

unset ARCHFLAGS
cd ..

1.在虚拟环境中安装pygobject

export PKG_CONFIG_PATH=$VIRTUAL_ENV/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig

curl -L http://ftp.gnome.org/pub/GNOME/sources/pygobject/3.12/pygobject-3.12.2.tar.xz | tar xJ
cd pygobject-3.12.2

./configure CFLAGS="-I$VIRTUAL_ENV/include" --prefix=$VIRTUAL_ENV
make
make install

cd ..

1.利润。

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from gi.repository import Gtk, Gdk, Pango, GObject
>>> from cairo import ImageSurface, Context, FORMAT_ARGB32
>>>

Python 3.5从PSF下载并安装。

eulz3vhy

eulz3vhy3#

我还没有找到一个合适的解决方案。当我遇到无法直接安装到virtualenv中的情况时,我将其符号链接到那里,它工作正常(可能有例外,但这不是其中之一)。

ln -s /usr/lib/python3/dist-packages/gi /path_to_venv/lib/python3.4/site-packages/

一点也不优雅;看起来比让virtualenv完全访问所有系统包要好(通过--system-site-packages)。

vawmfj5a

vawmfj5a4#

pip包的名称有点违反直觉-使用pip install PyGObject

piwo6bdm

piwo6bdm5#

我通过pip安装了pgi,这可能是一个选项。它显然是与PyGObject兼容API,到目前为止运行Gtk似乎工作正常。

4uqofj5v

4uqofj5v6#

在Ubuntu(在19.04中测试)上,您可以下载该软件包,然后按如下方式安装:

apt-get -y download python3-gi
dpkg-deb -x <package>.deb <virtualenv path>

在Ubuntu中,下载的软件包的名称是python3-gi_3.32.0-1_amd64.deb

nafvub8i

nafvub8i7#

sudo apt install build-dep python3-gi
pip install PyGObject

相关问题