Python中Virtualenv虚拟环境使用遇到的几个问题求助

Linux 环境,Python2.7.x
1,假设我是新建虚拟环境,那原来主环境中 pip 安装的三方包在虚拟环境中是不是自动可以用?
2,假设我已经创建了虚拟环境 env1,那我在原来主环境中安装了一个新的三方包,那要如何操作,可以在 env1 中可以直接 import 这个新的包,而不需要在 env1 再次安装?
3,假设我已经创建了虚拟环境 env1,env2,然后我在 env2 中安装了一个新的三方包,那要如何操作,可以在 env1 中可以直接 import 这个新的包,而不需要在 env1 再次安装?
Python中Virtualenv虚拟环境使用遇到的几个问题求助


8 回复

虚拟环境是Python开发的基础工具,常见问题主要围绕创建、激活、依赖管理和环境复制。

1. 创建虚拟环境失败 通常是Python路径问题或权限不足。确保使用正确的Python解释器:

# 指定Python版本创建
python3.8 -m venv myenv
# 或使用绝对路径
/usr/bin/python3 -m venv myenv

如果系统没有venv模块,先安装virtualenv包:pip install virtualenv

2. 激活环境无效 不同系统激活方式不同:

# Windows
myenv\Scripts\activate.bat  # cmd
myenv\Scripts\Activate.ps1  # PowerShell

# Linux/Mac
source myenv/bin/activate

激活后命令行提示符应显示环境名。如果没变化,手动设置PATH:

export PATH="/path/to/myenv/bin:$PATH"

3. 环境隔离不彻底 虚拟环境只隔离Python包,不隔离系统环境变量。如果需要完全隔离,考虑用Docker。检查已安装包:

pip list  # 应只显示虚拟环境内的包

4. 复制环境到其他机器 不要直接复制文件夹,用requirements.txt

# 导出依赖
pip freeze > requirements.txt

# 新环境安装
pip install -r requirements.txt

对于复杂项目,用pipenvpoetry能更好地处理依赖树。

5. 虚拟环境占用空间大 每个环境都包含完整的Python副本。删除不再使用的环境:直接删除环境文件夹即可。

6. 在IDE中使用 PyCharm/VSCode等IDE需要手动设置解释器路径:

  • PyCharm: Settings → Project → Python Interpreter → 添加环境路径
  • VSCode: 选择解释器(Ctrl+Shift+P)→ 输入myenv/bin/python

总结:掌握基础命令就能应对大部分情况。

轮写好安装脚本 shell 的重要性,环境直接初始化。

你应该切换到用 Pipenv 或者 pyvenv

可以通过创建的时候添加参数–system-site-packages 来使用系统的 site-packages 2。3 暂时不太好实现,因为 virtualenv 的出现解决的很重要的一个问题就是,各个 repo 中 python 环境的隔离。 而且,考虑到不同 repo 中依赖的包的版本可能是不一致的,不太推荐不同环境中包的混用。

要做都可以做到, 只是不建议而已

1. 楼上有人说了, 通过 --system-site-packages 解决
2. 3. 可以通过修改 PYTHONPATH 或 添加 .pth 文件解决

当然这样就违反了环境隔离的初衷, 容易给今后埋坑。 我认为 2. 3. 应该完全杜绝,1. 在一些不太重要的场合 可以酌情使用, 比如安装 PyQt

1L 正解。不过 virtualenv 就是为了给多个 Python 环境隔离包来管理,重复安装没什么损失吧,优先从 cache 安装,而且体积也不是特别大的样子。

彼此独立的 你的依赖不应该都在 requirements.txt 里面么

回到顶部