使用conda创建新环境时,我们得到一个完全空的虚拟环境:
conda create --name=test
conda activate test
conda list
最后一条命令的输出为空列表,甚至没有安装pip
。我想使用python venv
命令获得相同的结果(或者至少安装了pip
的“最小”虚拟环境)。当我运行python -m venv test
时,新环境包含“系统范围内”所有可用的软件包:
python -m venv test
source test/bin/activate
pip freeze
输出一长串软件包。
根据the documentation,该命令具有--system-site-packages
参数,但默认情况下它看起来像是打开的,我找不到禁用它的方法。我也尝试使用旧的virtualenv --clear
参数,但显然没有考虑。
编辑:
原来是环境模块module
命令干扰python模块(https://modules.readthedocs.io/en/latest/)。运行module purge
后,pip freeze
返回空列表。
答案 0 :(得分:1)
编辑:
尝试以下操作:
$ python3 --version
Python 3.7.4
$ python3 -m venv test_venv
$ source ./test_venv/bin/activate
$ pip list
Package Version
---------- -------
pip 19.0.3
setuptools 40.8.0
You are using pip version 19.0.3, however version 19.2.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(test_venv)
$ pip freeze
(test_venv)
如果安装了virtualenv
,要创建一个没有“系统范围” pip程序包的“新鲜”虚拟环境,请尝试以下操作:
# create new folder:
$ mkdir test_venv
# create virtual env:
$ virtualenv test_venv/
# activate virtual env:
$ source ./test_venv/bin/activate
# list packages in virtual env (test_venv):
$ pip list
Package Version
---------- -------
pip 19.2.3
setuptools 41.2.0
wheel 0.33.6
(test_venv)
答案 1 :(得分:1)
当我们使用pyvenv.cfg
创建虚拟环境时,配置文件venv
应该位于虚拟环境的根目录中。根据{{3}},如果先前运行的include-system-site-packages
没有使用false
选项,则该文件应包含带有venv
键的行,并将其设置为--system-site-packages
。