如何在virtualenv中强制安装软件包?

pet*_*huk 1 python django pip webfaction

尝试在系统中安装具有不同版本的django,它向我显示:

Installing collected packages: Django
Found existing installation: Django 1.7.11
Not uninstalling django at /home/user/lib/python2.7, outside environment /home/user/webapps/v2_dev/venv
Run Code Online (Sandbox Code Playgroud)

成功安装Django-1.8.19

但实际上有旧版本

尝试了不同的命令:

./venv/bin/pip install Django==1.8.11

pip install Django==1.8.11
Run Code Online (Sandbox Code Playgroud)

更新:安装软件包时,它显示:

The required version of setuptools (>=16.0) is not available,
and can't be installed while this script is running. Please
install a more recent version first, using
'easy_install -U setuptools'.
(Currently using setuptools 3.1 (/home/user/lib/python2.7/setuptools-3.1-py2.7.egg))
Run Code Online (Sandbox Code Playgroud)

升级时:

venv/bin/pip install --upgrade setuptools
Requirement already up-to-date: setuptools in ./venv/lib/python2.7/site-packages (40.5.0)
Run Code Online (Sandbox Code Playgroud)

mac*_*nic 6

而不是安装的setuptoolsDjango喜欢./venv/bin/pip install ...,尽量先激活您的虚拟环境,并安装你需要事后的东西。

激活虚拟环境:

转到您的虚拟环境所在的文件夹(通常是项目的根文件夹),然后输入以下两者之一:

  • source venv/bin/activate (基于Unix的系统)
  • venv\Scripts\activate (视窗)

这将确保您不会混合安装在不同环境中的软件包。

强制重新安装软件包:

  • 简单的升级可以通过添加:--upgrade-U
  • 可以通过添加以下命令来强制重新安装软件包: --force-reinstall

就您而言(一旦激活了环境)

python -m pip install -U --force-reinstall setuptools Django
Run Code Online (Sandbox Code Playgroud)

一步步:

  1. 停用并删除旧的虚拟环境
  2. 使用python -m virtualenv venv(python 2)或 python -m venv venv(python 3)创建新环境

    上面的python是您要在项目中使用的解释器。那是您可能想要使用示例python3或某些绝对路径的唯一点。以后按原样使用代码。

  3. source venv/bin/activate

    激活虚拟环境

  4. python -m pip install -U pip

    如果您遇到问题,则ImportError: No module named _internal可能是您使用的是旧版本的pip。问题在这里描述

  5. python -m pip install -U --force-reinstall -r requirements.txt

    -U --force-reinstall 在新鲜的环境中有点过分用药,但不会造成伤害

  6. 转到您manage.py的所在地,然后使用启动服务器python manage.py runserver


Bza*_*azz 6

我在寻找如何在 virtualenv 中强制安装某些东西时到达这篇文章,尽管它已经安装在全局 python 中。当使用--system-site-packages.

在这种情况下,对于某些包,在 virtualenv 中有一个本地版本可能很重要,即使对于许多其他包我们可以共享全局版本。pytest例如,就是这种情况。但是,如果 pip 已经可以在系统站点中找到最新版本,则 pip 将拒绝在 virtualenv 中安装软件包。

解决方案是使用pip install --ignore-installed mypackage.

  • 我相信这应该是正确的答案。该问题特别要求一种方法“在 virtualenv 中强制安装包,尽管它存在于系统的全局包文件夹中”。因此,这个答案提供了正确的解决方案。像其他答案建议的那样升级软件包是错误的选择,因为这可能会更改requirements.txt中软件包的指定版本。 (2认同)

pet*_*huk 0

问题出在 Webfaction VPS 上

在 /home/username/webapps/appName/env/lib/python2 中需要一个名为 sitecustomize.py 的空文件。

该空文件会覆盖其 python 自定义设置,其中之一是包含 ~/lib/python2.7 目录中的任何包。

您可能需要停用虚拟环境并再次激活它才能使更改生效。