![](/img/trans.png)
[英]ImportError: cannot import name '_gi' using python3-gi on RPi Zero
[英]How do I install python3-gi within virtualenv?
我正在关注Python GTK + 3教程 ,我正在尝试在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安装的。
我还没有找到适当的解决方案。 当我遇到无法直接安装到virtualenv的情况时,我在那里进行符号链接并且它工作正常(可能存在异常,但这不是其中之一)。
ln -s /usr/lib/python3/dist-packages/gi /path_to_venv/lib/python3.4/site-packages/
丝毫不优雅; 似乎比给virtualenv完全访问所有系统包更好(通过--system-site-packages
)。
更新2018年 - Debian Stretch
安装GTK + 3 / GIR。
apt install libcairo2-dev libgirepository1.0-dev gir1.2-gtk-3.0
创建一个虚拟环境。
python3 -mvenv venv
安装pygobject
( pycairo
应该作为依赖项)。
venv/bin/pip install pygobject
更新2018年 - macOS
用Homebrew安装GTK + 3和Gobject Introspection。
brew install gtk+3 gobject-introspection
创建并激活虚拟环境。
python3 -mvenv venv
安装pygobject
( pycairo
应该作为依赖项)。
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所做的工作。
用Homebrew安装GTK + 3。
brew install gtk+3
创建并激活虚拟环境。
pyvenv-3.5 venv source venv/bin/activate cd venv
在虚拟环境中安装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 ..
在虚拟环境中安装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 ..
利润。
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 >>>
从PSF下载并安装了Python 3.5。
我通过pip
安装了pgi
,这可能是一个选项。 它显然是与PyGObject
兼容的API,到目前为止似乎可以正常运行Gtk
。
pip包名称有点违反直觉 - 使用pip install PyGObject
。
在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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.