【问题标题】:make some modules from global site-packages available in virtualenv使来自全局站点包的一些模块在 virtualenv 中可用
【发布时间】:2013-10-14 05:23:38
【问题描述】:

我想使用 virtualenv 的默认(无站点包)。

但是有些模块很难在 virtualenv 中安装(例如 gtk)。 “困难”是指你需要安装很多 c-header 文件并且需要编译很多东西。

我知道我可以通过不使用 pip 安装这些包来解决这个问题,而是创建符号链接以使某些模块可从全局站点包目录中使用。

但这是正确的方向吗?

有没有办法用 pip 或 virtualenv 创建符号链接?

更新

在 2013 年,我希望通过 virtualenv 中的 rpm/dpkg 将一些模块(如 psycopg2、gtk、python-ldap 等)安装在我的 linux 服务器上。

符号链接或其他变通办法确实使事情变得更复杂,而不是更简单。我们今天(2017 年)使用此选项

--系统站点包

让虚拟环境访问全局 站点包。

【问题讨论】:

  • hard to install in a virtualenv 是什么意思,什么是hard?不过,符号链接是可以的,请参阅 stackoverflow.com/a/3399920/1265154 了解流程自动化的方法
  • @alko 谢谢你的提问。我更新了这个问题:这很难/困难,因为你需要很多 c-header 文件,如果你使用 pip 安装(对于像 gtk 或 matplotlib 这样的包)需要编译很多。

标签: python virtualenv


【解决方案1】:

我会说是的,这是正确的方向。

您的问题听起来与我处理的问题相似:将 OpenCV 安装到 virtualenv 中。我的问题是 OpenCV 无法通过 pip (Python 包索引)获得。我最终做的是查询相关模块的系统范围的全局 Python 安装,然后将 .so 复制到我的 virtualenv 中。

整个过程,包括我使用的样板 Makefile,都在这里捕获:https://stackoverflow.com/a/19213369/1510289

您可以通过符号链接而不是复制来做类似的事情。我最终复制库的原因是因为我使用 Make,而 Make 不会以我需要的方式处理符号链接的依赖项(如上面的 URL 中所述。)

希望这会有所帮助...

【讨论】:

    【解决方案2】:

    您如何从头开始编译这些“硬”包? 您是否正在做类似的事情:

    python setup.py install
    

    如果是这样,请将其替换为:

    python setup.py bdist_wheel
    

    然后在./dist 目录中查找.whl 文件。然后获取该文件的任何内容,然后执行(激活环境后)

    pip install `./dist/whateverTheFileIsCalled.whl`
    

    【讨论】:

    • 我更新了问题。我们希望 rpm/dpkg 在 vi​​rtualenv 中安装 python 库。
    猜你喜欢
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 2012-09-08
    • 2014-01-24
    • 2011-05-05
    • 2012-08-18
    • 1970-01-01
    相关资源
    最近更新 更多