2016-08-29 113 views
2

我已經看過this,並嘗試下面的代碼:如何在虛擬環境中安裝python「gi」模塊?

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仍然會產生錯誤:

[email protected]:~/Documents/XXX/tools$ source python_2_7_9/bin/activate 
(python_2_7_9) [email protected]:~/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正常工作:

[email protected]:~$ 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。非常感謝!

回答

-2

您需要在虛擬環境中安裝必要的模塊。

激活後,您必須pip install <library name>。在你的情況下,它應該是pip install gi

+0

(python_2_7_9)YBA @ Ubuntu的:〜/文檔/ XXX /工具$ PIP安裝油嘴 收集油腔滑調 找不到滿足要求油嘴(從版本一個版本: ) 找不到匹配的glib發行版 –

+0

那麼你確定它是'pip install glib'嗎?謝謝! –

+0

它看起來像庫被稱爲gi,我相應地編輯了答案。如果有效,請將其標記爲有效答案。 – Av4t4r

-2

首先,請記住,虛擬環境(2.7.9)使用的Python與系統範圍的Python(2.7.6)不同,所以我沒有看到在他們之間進行比較的重點。

你可以做的一件事是從零開始創建虛擬環境,但使用-p標誌來指示應該使用哪個Python版本。就像這樣:

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

其次重要的是,你與2.7.9版本報告undefined symbol: PyUnicodeUCS4_FromUnicode錯誤可能與Python的來源不正確編譯有關。請嘗試重新編譯他們,但注意--enable-unicode=ucs4選項,在./configure行:

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

現在可以使用vext來解決這個問題。 Vext允許您在virtualenv中安裝軟件包,這些軟件包可以單獨訪問您的系統軟件包。要訪問gi,請執行下列操作:

pip install vext 
pip install vext.gi 
+0

這只是給了我一串很長的錯誤消息,然後失敗:( –

+0

@ErikAronesty我不再在同一個系統上,所以我不能仔細檢查 - 可能會發佈一個問題https://github.com/ stuaxo/vext/issues,如果我錯過了一個步驟或類似明確安裝gi本身,請隨時編輯 – d3vid

+1

這對我有用如果你不想要vext只需創建一個virtualenv --system- site-packages。或者爲pipenv:'pipenv --python 3.6 --site-packages'。 – r03

相關問題