【问题标题】:Python: virtualenv - gtk-2.0Python:虚拟环境-gtk-2.0
【发布时间】:2010-08-27 00:23:02
【问题描述】:

要将 gtk-2.0 添加到我的 virtualenv 中,我执行了以下操作:

$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv
$ cd myvirtualenv
$ source bin/activate
$ cd lib/python2.6/
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/ 

Virtualenv on Ubuntu with no site-packages

现在,当我导入 gtk 时,Python 解释器中显示:没有名为 gtk 的模块。当我用 sudo 启动解释器时,它可以工作。

我需要使用 sudo 的任何原因,有没有办法防止它?

更新:
忘了说 cairo 和 pygtk 可以工作,但这不是我需要的。

更新 2:
这里的目录表明我没有疯。 http://www.friendly-stranger.com/pictures/symlink.jpg

【问题讨论】:

    标签: python virtualenv


    【解决方案1】:

    sudo python 可以很好地导入它,因为该解释器没有使用您的虚拟环境。所以不要那样做。

    您只链接了一项必要的项目。对您链接的问题的答案中提到的其他人也这样做。

    (pygtk.pth 文件特别重要,因为它告诉 python 将您链接的目录实际放入 python 路径)

    更新

    把这些东西放在 $VIRTUALENV/lib/python2.6/site-packages/ 而不是上面的目录中。

    看起来 .pth 文件不是从该目录中读取的 - 只是从站点包中读取的

    【讨论】:

    • 我可以导入 pygtk 和 cairo 但不能导入 gtk。感谢您阐明为什么 sudo 有效。现在我需要找出为什么 gtk 不起作用。
    • 啊哈,胜利了!非常感谢 Kwaford。
    【解决方案2】:

    这对我有用(Ubuntu 11.10):

    一旦你激活了你的 virtualenv 目录,确保 'dist-packages' 存在:

    mkdir -p lib/python2.7/dist-packages/
    

    然后,建立链接:

    对于 GTK2:

    ln -s /usr/lib/python2.7/dist-packages/glib/ lib/python2.7/dist-packages/
    ln -s /usr/lib/python2.7/dist-packages/gobject/ lib/python2.7/dist-packages/
    ln -s /usr/lib/python2.7/dist-packages/gtk-2.0* lib/python2.7/dist-packages/
    ln -s /usr/lib/python2.7/dist-packages/pygtk.pth lib/python2.7/dist-packages/
    ln -s /usr/lib/python2.7/dist-packages/cairo lib/python2.7/dist-packages/
    

    对于 GTK3:

    ln -s /usr/lib/python2.7/dist-packages/gi lib/python2.7/dist-packages/
    

    【讨论】:

      【解决方案3】:

      记得添加 pygtk.py 的链接

      ln -s /usr/lib/python2.7/dist-packages/pygtk.py lib/python2.7/dist-packages/
      

      【讨论】:

        【解决方案4】:

        在基于 Debian 的 Linux 系统(Ubuntu、Mint)上,您只需安装我放在 PyPI 上的 ruamel.venvgtk 软件包。它将在安装期间在您的 virtualenv 中创建相关链接(如果它们还没有)。

        更详细的解释可以在this answer找到

        【讨论】:

          【解决方案5】:

          如果不是要求,虚拟环境中不使用 Python 系统包,我会安装 apt install python-gtk2 (Ubuntu) 然后创建虚拟环境:

          virtualenv --system-site-packages .

          这样,您不会在虚拟环境中安装 pip 污染系统环境,而是重用系统中的所有内容。特别是pygtk。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-27
            • 1970-01-01
            • 1970-01-01
            • 2019-09-24
            • 2020-11-19
            • 2020-12-13
            • 2017-05-07
            • 2020-09-02
            相关资源
            最近更新 更多