具有python解释器的virtualenv比系统范围解释器更新
编辑:如果您投票认为该问题重复,请至少花时间阅读该问题,而不是仅仅将其标记为重复问题,因为它看起来与另一个问题类似。如果你这么做了,你会马上意识到它不是复制品。我只是想展示一些更广阔的背景。 我的发行版仍然使用Python 2.6作为Python解释器。现在我想使用一个模块,它需要Python2.7。我安装了Python2.7,但它会破坏其他应用程序。因此,我使用Python 2.7作为解释器设置了一个虚拟环境:具有python解释器的virtualenv比系统范围解释器更新,python,python-2.7,gtk,virtualenv,pygtk,Python,Python 2.7,Gtk,Virtualenv,Pygtk,编辑:如果您投票认为该问题重复,请至少花时间阅读该问题,而不是仅仅将其标记为重复问题,因为它看起来与另一个问题类似。如果你这么做了,你会马上意识到它不是复制品。我只是想展示一些更广阔的背景。 我的发行版仍然使用Python 2.6作为Python解释器。现在我想使用一个模块,它需要Python2.7。我安装了Python2.7,但它会破坏其他应用程序。因此,我使用Python 2.7作为解释器设置了一个虚拟环境: virtualenv -p ~/pkg/bin/python2.7 venv 如
virtualenv -p ~/pkg/bin/python2.7 venv
如果我激活虚拟环境并运行python,则会使用新的解释器。好!!现在我需要导入模块,例如
import gtk
这是全局性的(即在Python2.6中),但在我的虚拟环境中(即在Python2.7中)不起作用。我试图为虚拟环境设置相同的sys.path
,但这会导致以下错误:
importorror:/usr/lib64/python2.6/site-packages/gtk-2.0/glib//u glib.so:未定义符号:PyUnicodeUCS4\u DecodeUTF8
这在某种程度上是意料之中的
搜索
pip search gtk
也不会导致任何结果。我现在最好的猜测是,我必须从源代码安装gtk,并根据Python2.7编译它。然而,这又引入了其他依赖项,在这个洞里走了7到8步,我辞职了
是否有更简单的方法解决此问题?首次激活虚拟环境后,您需要安装所需的任何软件包(例如,
pip install pep8 naming
)
创建虚拟环境时,它基本上充当python的独立安装。如果以前在全局Python 2.6实例中安装了gtk
(或任何其他软件包),则在Python 2.7虚拟环境中不可用
相反,您需要在切换到环境后重新安装所需的任何软件包
例如,在我的Mac上,默认的系统python是2.7
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
但我安装了很多蟒蛇:
$ python <tab><tab>
python python2.7-32 python3.2m-config python3.4m pythonw2.7-32
python-32 python2.7-config python3.3 python3.4m-config pythonw3
python-config python3 python3.3-32 pythontex pythonw3-32
python2 python3-32 python3.3-config pythonw pythonw3.2
python2-32 python3-config python3.3m pythonw-32 pythonw3.2-32
python2-config python3.2 python3.3m-config pythonw2 pythonw3.3
python2.6 python3.2-32 python3.4 pythonw2-32 pythonw3.3-32
python2.6-config python3.2-config python3.4-32 pythonw2.6
python2.7 python3.2m python3.4-config pythonw2.7
可能是@snakecharmerb的复制品不是那样。pfnuesel:不,不能在Python2.7中使用Python2.6c扩展。取而代之的是:考虑升级你的操作系统,这样你就可以得到2.7甚至更好的Python 3。@安蒂哈帕拉是的,这对我来说是有意义的。升级,虽然是个好建议,但不幸的是不可能,因为这是我们的服务器操作系统,运行在几千台服务器上。@Snakecherb请看我的编辑。我理解所有这些。我的问题是如何为比系统上安装的解释器更新的解释器安装
gtk
。@pfnuesel,您在激活的virtualenv中使用pip。所以,您只是想知道要安装哪个软件包?您是否尝试过pip安装PyGTK?@kdopen是pip install PyGTK
提供了无法找到满足PyGTK要求的版本(从版本:)未找到与PyGTK匹配的发行版。
$ mkvirtualenv -p `which python3.4` test
Running virtualenv with interpreter /Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Installing setuptools, pip, wheel...pdone.
$ pip list
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)