繁体   English   中英

如何在虚拟环境中安装python“ gi”模块?

[英]How to install python “gi” module in virtual environment?

我已经看过这个 ,并试图下面的代码:

ln -s /usr/lib/python2.7/dist-packages/pygtk.pth tools/python_2_7_9/lib/python2.7/site-packages/
ln -s /usr/lib/python2.7/dist-packages/gobject tools/python_2_7_9/lib/python2.7/site-packages/
ln -s /usr/lib/python2.7/dist-packages/gtk-2.0 tools/python_2_7_9/lib/python2.7/site-packages/
ln -s /usr/lib/python2.7/dist-packages/pygtk.pth tools/python_2_7_9/lib/python2.7/site-packages/
ln -s /usr/lib/python2.7/dist-packages/glib tools/python_2_7_9/lib/python2.7/site-packages/
ln -s /usr/lib/python2.7/dist-packages/gi tools/python_2_7_9/lib/python2.7/site-packages/
ln -s /usr/lib/python2.7/dist-packages/pygtkcompat tools/python_2_7_9/lib/python2.7/site-packages/

,但是import glibimport gi仍然会产生错误:

yba@ubuntu:~/Documents/XXX/tools$ source python_2_7_9/bin/activate
(python_2_7_9) yba@ubuntu:~/Documents/XXX/tools$ python
Python 2.7.9 (default, Aug 29 2016, 16:04:36) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import glib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/yba/Documents/XXX/tools/python_2_7_9/lib/python2.7/dist-packages/glib/__init__.py", line 22, in <module>
    from glib._glib import *
ImportError: /home/yba/Documents/XXX/tools/python_2_7_9/lib/python2.7/dist-packages/glib/_glib.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8
>>> import gi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/yba/Documents/XXX/tools/python_2_7_9/lib/python2.7/dist-packages/gi/__init__.py", line 36, in <module>
    from ._gi import _gobject
ImportError: /home/yba/Documents/lucida/tools/python_2_7_9/lib/python2.7/dist-packages/gi/_gi.so: undefined symbol: PyUnicodeUCS4_FromUnicode
>>> 

类似于该帖子,系统级python可以正常工作:

yba@ubuntu:~$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
>>> import glib
>>> 

如何解决这个问题? 另外,我真正需要的是import gi.repository而不是import gi 非常感谢!

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

pip install vext
pip install vext.gi

您需要在虚拟环境上安装必要的模块。

激活它后,您必须pip install <library name> 就您而言,应该是pip install gi

首先,请记住,虚拟环境使用的Python(2.7.9)与系统范围的Python(2.7.6)不同,因此我看不出在它们之间进行比较的意义。

您可以做的一件事是从头开始创建虚拟环境,但使用-p标志指示应使用哪个Python版本。 像这样:

virtualenv -p /usr/bin/python2.7 <virtualenv/new/path/>

其次,您使用2.7.9版本报告的undefined symbol: PyUnicodeUCS4_FromUnicode错误可能与Python源代码的不正确编译有关。 尝试再次编译它们,但请注意./configure行中的--enable-unicode=ucs4选项:

$> tar -xf Python-2.7.6.tar
$> cd Python-2.7.6
$> ./configure --prefix=/usr/local --enable-shared --enable-unicode=ucs4
$> make && make altinstall

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM