python - 如何让 virtualenv 在 Ubuntu 上使用 dist-packages?

标签 python ubuntu virtualenv package environment

我知道 virtualenv,如果在创建新的虚拟环境时没有传递 --no-site-packages 参数,将链接 /usr/local/lib/python2 中的包.7/site-packages(适用于 Python 2.7)和新创建的虚拟环境。在 Ubuntu 12.04 LTS 上,我有三个可以安装 Python 2.7 包的位置(使用默认的、Ubuntu 提供的 Python 2.7 安装):

  1. /usr/lib/python2.7/dist-packages:这是我全局安装的 ipython、scipy、numpy、matplotlib – 我会发现单独安装这些包既困难又费时(以及他们所有的依赖)如果他们不能通过 scipy stack 获得.
  2. /usr/local/lib/python2.7/site-packages:这是空的,我认为它会在 Ubuntu 上保持这种状态,除非我从源代码安装包。
  3. /usr/local/lib/python2.7/dist-packages:这里有非常重要的天文本地包,尤其是PyRAF、STScI等相关包,难度极高并且单独安装非常耗时。

请注意,我的系统上不存在诸如 /usr/lib/python2.7/site-packages 之类的全局目录。另请注意,我的 ipython、scipy 等的全局安装让我可以即时使用这些包,而不必每次都获取/激活虚拟环境。

当然,我现在想使用 virtualenv 在我的用户主目录中创建一个虚拟环境,我将为我 future 的项目提供/激活它。但是,我希望这个虚拟环境在创建时能够链接/复制上面列表中位置 (1) 和 (3) 中的所有包。这样做的主要原因是我不想通过 pip install 过程(如果可能的话)为此重新安装 ipython、scipy、astro-packages 等(可能还有其他)虚拟环境。

这是我的问题:

  1. 有没有办法让我指定 virtualenv,我希望它为将来创建的虚拟环境链接/复制这两个 dist-packages 目录中的包?
  2. 当我最终在两个 dist-packages 目录中更新我的 scipy、ipython 等全局安装时,这是否也会更新/更改我的虚拟环境使用的包(以及它最初使用的包在 virtualenv 创建期间得到)?
  3. 如果我在 Ubuntu 上从源代码安装一个包,它会进入 /usr/local/lib/python2.7/dist-packages 还是 /usr/local/lib/python2.7/site-packages?

预先感谢您的帮助!

最佳答案

这可能是 PYTHONPATH 的合法使用 - virtualenv 不涉及的环境变量,它使用与环境变量 PATH< 相同的语法,在 bash 中 PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages 在 .bashrc 或类似文件中。如果你走这条路,

  1. 您根本不必将此告诉您的虚拟环境,它不会尝试更改它。

  2. 不需要重新链接,并且

  3. 如果你安装它们,它仍然会去它应该去的地方(pip install 总是使用/usr/local/lib/python2.7/dist-packages/用于我的 Ubuntu)在您的虚拟环境之外。如果您从虚拟环境中安装它们(当它被激活时),那么它当然会被放入虚拟环境中。

关于python - 如何让 virtualenv 在 Ubuntu 上使用 dist-packages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210964/

相关文章:

python - 导入错误 : libcublas. so.9.0 : cannot open shared object file: No such file or directory when installing tensor flow on Ubuntu 16. 04.03

由于操作系统错误 105,MySQL 服务将不再启动

Python virtualenv setuptools 包问题

python - 在 Windows : how to run a Python script from a virtualenv 上相当于 "source"的批处理

python - 难以使用 statsmodels Python 包设置图例

node.js - 对 Nodejs 初学者的澄清

python - 基于 Pandas 组内日期的有效转换?

python-3.x - Python3 virtualenv 安装 python2

Python 脚本循环遍历文件并通过请求调用 api,然后将结果存储到文本文件

python - 用 Python 翻译人类语言