【问题标题】:virtualenv with python interpreter newer than systemwide interpreter具有比系统范围解释器更新的 python 解释器的 virtualenv
【发布时间】:2016-04-17 22:20:21
【问题描述】:

编辑:如果您将此问题投票为重复问题,请至少花时间阅读该问题,而不是仅仅将其标记为重复问题,因为它看起来与另一个问题有些相似。如果您这样做,您会立即意识到它不是重复的。我只是想展示一些更广泛的背景。

我的发行版仍然使用 Python 2.6 作为 Python 解释器。现在我想使用一个需要 Python 2.7 的模块。我安装了 Python 2.7,但它会破坏其他应用程序。于是我搭建了一个以 Python 2.7 作为解释器的虚拟环境:

virtualenv -p ~/pkg/bin/python2.7 venv

如果我激活虚拟环境并运行 python,则使用新的解释器。好的!现在我需要import 模块,例如

import gtk

这适用于全局(即在 Python 2.6 中),但不适用于我的虚拟环境(即在 Python 2.7 中)。我尝试为虚拟环境设置相同的sys.path,但这会给我诸如

之类的错误

ImportError:/usr/lib64/python2.6/site-packages/gtk-2.0/glib/_glib.so:未定义符号:PyUnicodeUCS4_DecodeUTF8

有点出乎意料。

搜索

pip search gtk

也不会导致任何结果。我现在最好的猜测是我必须从源代码安装 gtk,然后针对 Python 2.7 编译它。但是,这会引入其他依赖项,并且在这个漏洞中走了大约 7 或 8 步,我辞职了。

有没有更简单的方法来解决这个问题?

【问题讨论】:

  • @snakecharmerb 不是这样。 pfnuesel:不,你不能在 Python 2.7 中使用 Python 2.6 C 扩展。相反:考虑升级您的操作系统,以便获得 2.7 更好的体面 Python 3。
  • @AnttiHaapala 是的,这对我来说很有意义。升级虽然是个好建议,但不幸的是,这是不可能的,因为这是我们在数千台服务器上运行的服务器操作系统。
  • @snakecharmerb 查看我的编辑。

标签: python python-2.7 gtk virtualenv pygtk


【解决方案1】:

首次激活虚拟环境后,您需要安装所需的任何软件包(例如,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         

如果我创建一个新的 virtualenv,你可以看到它只安装了最少的软件包

$ 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)

【讨论】:

  • 我明白这一切。我的问题是如何为比系统上安装的解释器更新的解释器安装gtk
  • @pfnuesel,你在激活的 virtualenv 中使用 pip。
  • 所以,您只是想知道要安装哪个软件包?你试过pip install PyGTK吗?
  • @kdopen 是的。 pip install PyGTK 给我Could not find a version that satisfies the requirement PyGTK (from versions: ) No matching distribution found for PyGTK
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
相关资源
最近更新 更多