我在这个文件夹中安装了一个名为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
显示来自venv
或pip install -U pip
的已安装软件包返回Requirement already up-to-date: pip in ./WebScraper/django-markdown-editor/venv/lib/python3.8/site-packages (20.0.2)
。再次激活空的env
。是虫虫还是我误解了什么?
正如我们在评论部分所确定的,您的问题不是因为错误地设置了虚拟环境,但值得一提的是,对于将来可能遇到这个问题的其他人来说,可能的解决方案。
从其他虚拟环境目录调用虚拟环境的问题是将虚拟环境目录从一个地方复制到另一个地方的常见症状应该避免这种情况这背后的原因是[venv_dir]/bin/activate
脚本中硬编码的VIRTUAL_ENV
变量。因此,请始终确保此变量指向一个有效的目录。
OP解决方案
为了仅列出虚拟环境中的程序包,需要对pip freeze
或pip list
使用--local
标志。你可以在文档中找到这个:
-l,--local
如果在具有全局访问权限的虚拟机中,请不要列出全局安装的程序包。
关键短语是全局访问。pip不断查找虚拟环境之外的包的可能原因可能是PYTHONPATH
和PATH
环境变量。检查一下。无论你在这些路径上有什么,pip都会看到。