与python django中的虚拟环境混淆

与python django中的虚拟环境混淆,python,django,centos,Python,Django,Centos,我有我的Django项目文件夹,里面有我的virtualenv文件夹 我有几个问题 我已经在主安装和虚拟环境中安装了软件包。不要把那些包裹混在一起。我的意思是,如果我在主安装中有旧版本,在虚拟环境中有新版本,系统如何知道选择哪一个 假设我将我的项目文件夹移动到新计算机上,那么我可以使用相同的虚拟环境文件夹,因为它位于相同的应用程序目录中,或者我必须重新开始 我如何知道pip安装包安装到虚拟环境或主安装 除非您使用--system站点包创建virtualenv,否则包根本不会混合。如果他们这样做了

我有我的Django项目文件夹,里面有我的
virtualenv
文件夹

我有几个问题

  • 我已经在主安装和虚拟环境中安装了软件包。不要把那些包裹混在一起。我的意思是,如果我在主安装中有旧版本,在虚拟环境中有新版本,系统如何知道选择哪一个

  • 假设我将我的项目文件夹移动到新计算机上,那么我可以使用相同的虚拟环境文件夹,因为它位于相同的应用程序目录中,或者我必须重新开始

  • 我如何知道pip安装包安装到虚拟环境或主安装

  • 除非您使用--system站点包创建virtualenv,否则包根本不会混合。如果他们这样做了,Virtualenv将拥有优先权

  • 如果路径不变,则有可能重用它。如果路径发生变化,您可以选择。但是您应该创建一个需求文件,并且能够在一个
    pip-rreq.txt
    命令中重新生成一个新的virtualenv

  • 如果激活了virtualenv,pip将安装在virtualenv中,它具有优先权


  • 谢谢我看不到第2点和第3点,但仍然没有得到第1点。使用该站点包选项将出现什么情况。有没有办法不使用主安装中的单个软件包。我的意思是,主安装是否可能有0个软件包,而我的整个项目仅依赖于虚拟环境。请使用
    --无站点软件包
    选项。@Ohad:
    --无站点软件包
    是当前的默认设置。如果
    --没有站点软件包
    ,virtualenv将不允许访问系统站点软件包。使用
    --系统站点软件包
    ,当virtualenv被激活时,virtualenv将启用系统站点软件包。您可以运行
    pip freeze
    查看已安装软件包的列表,并通过
    pip uninstall
    删除不需要的软件包。如果我不使用任何站点软件包,则系统将不使用任何系统软件包,或者脚本将使用系统软件包,但它们不在虚拟环境中。因为我认为PYTHON路径仍然会存在。我的意思是,若我在系统中有PIL包,而不是在虚拟环境中。我的系统是从Main获取还是会出错?你在读我的答案吗?不管您是否使用--no站点包,因为它在默认情况下是启用的。使用
    pip freeze
    了解您的环境中有哪些包。除非您使用--system-site包,否则您的virtualenv将无法访问安装在您的系统站点包中的PIL-显然?另外,我应该注意到,virtualenv默认情况下会创建空环境,如果有疑问,只需检查新测试中的文件即可。根据系统安装的软件包,venv-vens不应有所不同。我认为您的问题是,您可能会混淆哪个软件包在哪个状态下使用。当您设置的虚拟环境不包含从默认站点包到虚拟环境的任何内容时,您可以使用
    --无站点包
    来避免此问题。我的意思是,如果我使用s系统包,那么这些包将在virtualenv中安装,或者virtualenv将从主系统使用它