如何在 virtualenv 中强制安装包?
How to force install package in virtualenv?
尝试在系统中安装不同版本的 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
成功安装 Django-1.8.19
但其实还有旧版本
尝试了不同的命令:
./venv/bin/pip install Django==1.8.11
pip install Django==1.8.11
更新:
当我安装我的包时,它显示:
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))
当我升级时:
venv/bin/pip install --upgrade setuptools
Requirement already up-to-date: setuptools in ./venv/lib/python2.7/site-packages (40.5.0)
不要像 ./venv/bin/pip install ...
那样安装 setuptools
和 Django
,而是先尝试激活您的虚拟环境,然后再安装您需要的东西。
正在激活虚拟环境:
转到您的虚拟环境所在的文件夹(通常是项目的根文件夹)并键入以下两者之一:
source venv/bin/activate
(基于 Unix 的系统)
venv\Scripts\activate
(Windows)
这将确保您不会混合安装在不同环境中的包。
强制重新安装软件包:
- 简单升级可以通过添加:
--upgrade
或-U
- 可以通过添加以下内容来强制重新安装软件包:
--force-reinstall
你的情况(一旦环境被激活):
python -m pip install -U --force-reinstall setuptools Django
一步一步:
- 停用并删除旧的虚拟环境
使用 python -m virtualenv venv
(python 2) 或 python -m venv venv
(python 3)
创建新环境
python 以上就是你要在项目中使用的解释器。这是您可能想要使用 python3
或一些绝对路径的唯一点。稍后按原样使用代码。
source venv/bin/activate
激活虚拟环境
python -m pip install -U pip
如果您对 ImportError: No module named _internal
有疑问,那么您可能使用的是旧版本的 pip。问题描述 here
python -m pip install -U --force-reinstall -r requirements.txt
-U --force-reinstall
在新鲜环境下有点大材小用,但也无妨
到你的manage.py
所在的地方,使用python manage.py runserver
启动服务器
问题出在 Webfaction VPS
在 /home/username/webapps/appName/env/lib/python2 中需要一个名为 sitecustomize.py 的空文件。
该空文件覆盖了他们的 python 自定义,其中之一是将任何包包含在 ~/lib/python2.7 目录中。
您可能需要停用您的虚拟环境并再次激活它才能使更改生效。
我在寻找如何在 virtualenv 中强制安装一些东西时遇到了这个 post,尽管它已经安装在全局 python 中。当使用 --system-site-packages
.
创建虚拟环境时会发生这种情况
在这种情况下,对于某些包,在 virtualenv 中拥有一个本地版本可能很重要,即使对于许多其他包,我们可以共享全球版本。例如 pytest
就是这种情况。但是,如果 pip 已经可以在系统站点中找到最新版本,它将拒绝在 virtualenv 中安装包。
解决方法是使用pip install --ignore-installed mypackage
.
解决方法但有效!
在您的 virtualenv 目录中更改 pyvenv.cfg 文件的属性
include-system-site-packages = True
这将导致安装在 main 上的包被使用
尝试在系统中安装不同版本的 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
成功安装 Django-1.8.19
但其实还有旧版本
尝试了不同的命令:
./venv/bin/pip install Django==1.8.11
pip install Django==1.8.11
更新: 当我安装我的包时,它显示:
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))
当我升级时:
venv/bin/pip install --upgrade setuptools
Requirement already up-to-date: setuptools in ./venv/lib/python2.7/site-packages (40.5.0)
不要像 ./venv/bin/pip install ...
那样安装 setuptools
和 Django
,而是先尝试激活您的虚拟环境,然后再安装您需要的东西。
正在激活虚拟环境:
转到您的虚拟环境所在的文件夹(通常是项目的根文件夹)并键入以下两者之一:
source venv/bin/activate
(基于 Unix 的系统)venv\Scripts\activate
(Windows)
这将确保您不会混合安装在不同环境中的包。
强制重新安装软件包:
- 简单升级可以通过添加:
--upgrade
或-U
- 可以通过添加以下内容来强制重新安装软件包:
--force-reinstall
你的情况(一旦环境被激活):
python -m pip install -U --force-reinstall setuptools Django
一步一步:
- 停用并删除旧的虚拟环境
使用
创建新环境python -m virtualenv venv
(python 2) 或python -m venv venv
(python 3)python 以上就是你要在项目中使用的解释器。这是您可能想要使用
python3
或一些绝对路径的唯一点。稍后按原样使用代码。source venv/bin/activate
激活虚拟环境
python -m pip install -U pip
如果您对
ImportError: No module named _internal
有疑问,那么您可能使用的是旧版本的 pip。问题描述 herepython -m pip install -U --force-reinstall -r requirements.txt
-U --force-reinstall
在新鲜环境下有点大材小用,但也无妨到你的
manage.py
所在的地方,使用python manage.py runserver
启动服务器
问题出在 Webfaction VPS
在 /home/username/webapps/appName/env/lib/python2 中需要一个名为 sitecustomize.py 的空文件。
该空文件覆盖了他们的 python 自定义,其中之一是将任何包包含在 ~/lib/python2.7 目录中。
您可能需要停用您的虚拟环境并再次激活它才能使更改生效。
我在寻找如何在 virtualenv 中强制安装一些东西时遇到了这个 post,尽管它已经安装在全局 python 中。当使用 --system-site-packages
.
在这种情况下,对于某些包,在 virtualenv 中拥有一个本地版本可能很重要,即使对于许多其他包,我们可以共享全球版本。例如 pytest
就是这种情况。但是,如果 pip 已经可以在系统站点中找到最新版本,它将拒绝在 virtualenv 中安装包。
解决方法是使用pip install --ignore-installed mypackage
.
解决方法但有效!
在您的 virtualenv 目录中更改 pyvenv.cfg 文件的属性
include-system-site-packages = True
这将导致安装在 main 上的包被使用