一个python虚拟环境应该是独立的吗?如果没有,是否存在危险的跨环境混乱?

时间:2017-05-13 05:27:14

标签: python path virtualenv relative-path

在我的虚拟环境中工作,虚拟环境中未解决的任何导入调用都将在"原始"环境是可能的。同时, 根据{{​​3}},允许相对引用。我担心这可能导致与进入或试图进入程序执行的相同命名对象的不同版本混淆/冲突。我是Python的新手,我确信这个问题已在文档中介绍,但我无法找到它。有什么指针吗?

2017年5月13日更新 - 我找到了python 3.6.1的以下文档:https://docs.python.org/3/tutorial/modules.html#intra-package-references

  

在Windows上,按如下方式调用venv命令:

     

c:\>c:\Python35\python -m venv c:\path\to\myenv

     

usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] ENV_DIR [ENV_DIR ...]

     

--system-site-packages: Give the virtual environment access to the system site-packages dir.

默认情况下,无权访问系统site-packages目录。因此,我推测系统site-packages目录之外的任何代码都被认为是足够安全的#34;关于相对导入路径的使用,用户负责不与这些项目冲突。

1 个答案:

答案 0 :(得分:1)

这不是一个大问题,尝试使用pyenv,你将能够拥有一个独立的python版本,如果任何导入调用未解决,它将搜索路径你用来创建你的virtualenv而不是sys python路径的特定python(由pyenv安装)。

  1. 安装pyenv
  2. 安装特定的python版本
  3. 使用pyenv安装的特定python版本来设置你的virtualenv。
  4. 检查你的python代码的解析路径

    import sys
    print(sys.path)
    

    并且列表中的目录将表示命令python搜索您的路径。