New venv Virtual Environment的行为就像另一个已经存在的env [Python]

问题描述 投票:0回答:1

我在此文件夹中安装了一个名为env的venv:

|-- ScreenScraper
|   |-- backend
|   |-- docker-compose.yml
|   |-- env
|   `-- scraper_return

当我激活它时,它的行为类似于此文件夹中另一个名为venv的env :(末尾)

|-- WebScraper
|   |-- __pycache__
|   |   |-- hello.cpython-37.pyc
|   |   `-- hello.cpython-38.pyc
|   |-- byob-profiles-rest-api-docker
|   |   |-- Dockerfile
|   |   |-- LICENSE
|   |   |-- README.md
|   |   |-- Vagrantfile
|   |   |-- docker-compose.yml
|   |   |-- hello_world.py
|   |   |-- requirements.txt
|   |   `-- src
|   |-- django-markdown-editor
|   |   |-- LICENSE
|   |   |-- MANIFEST.in
|   |   |-- README.rst
|   |   |-- __screenshot
|   |   |-- martor
|   |   |-- martor_demo
|   |   |-- push.sh
|   |   |-- requirements.txt
|   |   |-- runtests.py
|   |   |-- setup.cfg
|   |   |-- setup.py
|   |   `-- venv

例如,pip list显示了从venvpip install -U pip返回的已安装软件包。再次激活空的Requirement already up-to-date: pip in ./WebScraper/django-markdown-editor/venv/lib/python3.8/site-packages (20.0.2)。是Bug还是我误会了?

保持健康

python pip package python-venv
1个回答
0
投票

正如我们在评论部分中确定的那样,您的问题不是由于错误地设置了虚拟环境,而是值得为将来可能遇到此问题的其他人提到可能的解决方案。

从其他虚拟环境目录调用虚拟环境的问题是将虚拟环境目录从一个地方复制到另一个地方的常见症状。 应该避免!其背后的原因是env脚本中硬编码的VIRTUAL_ENV变量。因此,请始终确保该变量指向有效目录。

OP解决方案

为了从虚拟环境中列出软件包,您需要对[venv_dir]/bin/activate--local使用pip freeze标志。您可以在文档中找到它:

-l,--local

如果在具有全局访问权限的virtualenv中,请不要列出全局安装的软件包。

关键词是全局访问。 pip继续查找虚拟环境之外的软件包的可能原因可能是pip list环境变量。核实。点选即可显示PYTHONPATH中的所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.