为什么virtualenv在被拉入后依赖于全局python而不是本地python?

为什么virtualenv在被拉入后依赖于全局python而不是本地python?,python,virtualenv,Python,Virtualenv,我拉(git)了一个python项目,它是(由我在另一台计算机上)使用virtualenv创建的。因此,python库实际上位于本项目的本地目录中(例如,fila_env/bin/python)。拉动后,我可以找到它(见下面的树)。但是,当我激活环境时(使用source fila_env/bin/activate),将使用此计算机上的python而不是virtualenv: (fila_env) username@ASCSC-645A:~/CODES/.../myProject$ which p

我拉(git)了一个python项目,它是(由我在另一台计算机上)使用virtualenv创建的。因此,python库实际上位于本项目的本地目录中(例如,
fila_env/bin/python
)。拉动后,我可以找到它(见下面的树)。但是,当我激活环境时(使用
source fila_env/bin/activate
),将使用此计算机上的python而不是virtualenv:

(fila_env) username@ASCSC-645A:~/CODES/.../myProject$ which python
>>> /usr/bin/python
我在谷歌上搜索了一下,但找不到解决这个问题的好办法。我想知道:

  • 我如何才能保证,如果有人退出这个项目,他们只会 使用提供的python库,而不是他们自己的python
  • 这是创建virtualenv并将整个项目(包括virtualenv)推送到云中的正确方法吗
  • 以下是更多信息:

    ├── yyyyyyExample.py
    ├── fila_env
    │   ├── bin
    │   │   ├── activate
    │   │   ├── ...
    │   │   ├── python
    │   │   ├── python2 -> python
    │   │   ├── python2.7 -> python
    │   │   ├── python-config
    │   │   ├── ...
    │   │   └── wheel
    │   ├── include
    │   │   └── python2.7 -> /usr/include/python2.7
    │   ├── lib
    │   │   └── python2.7
    │   ├── local
    │   │   ├── bin -> .../fila_env/bin
    │   │   ├── include -> .../fila_env/include
    │   │   └── lib -> .../fila_env/lib
    │   ├── pip-selfcheck.json
    │   └── share
    │       ├── jupyter
    │       └── man
    └── xxxxxxExample.py
    
  • 你不能也不应该,如果我使用32位Linux,而你的virtualenv是在64位Windows上创建的(反之亦然),你的python二进制文件肯定不会适合我

  • 同样,不是。virtualenv是开发人员的工具,而不是分发工具。对于分布,您应该考虑或创建具有平台依赖性的二进制文件,或类似的工具。

  • 你不能也不应该,如果我使用32位Linux,而你的virtualenv是在64位Windows上创建的(反之亦然),你的python二进制文件肯定不会适合我

  • 同样,不是。virtualenv是开发人员的工具,而不是分发工具。对于分布,您应该考虑或创建具有平台依赖性的二进制文件,或类似的工具。


  • 另一种选择是:如果您有一个显式(C)Python依赖项,那么最好将其打包为Conda包。以另一种方式指定任何依赖项,或者只是尝试完全避免它们(您真的需要特定的Python版本吗?确切的版本是什么,为什么?)。如果您激活我们的本地环境,它将尝试从本地获取pip包,如果在本地环境中找不到包,它将从全局获取。您可以创建一个requirements.txt,其中包含所有pip包。每个克隆我们项目的人只需在本地服务器上进行pip安装environment@LavanyaPant所有这些软件包都是使用本地pip安装的。requirements.txt文件也在那里,但我只发布了一个摘要列表。@Azim我们应该避免将虚拟环境推送到git。如果有人想在本地安装它,他/她应该创建虚拟环境并安装您的包。作为替代方案:如果您有显式(C)Python依赖项,您最好将其打包为Conda包。我对问题的回答是“否”。以另一种方式指定任何依赖项,或者只是尝试完全避免它们(您真的需要特定的Python版本吗?确切的版本是什么,为什么?)。如果您激活我们的本地环境,它将尝试从本地获取pip包,如果在本地环境中找不到包,它将从全局获取。您可以创建一个requirements.txt,其中包含所有pip包。每个克隆我们项目的人只需在本地服务器上进行pip安装environment@LavanyaPant所有这些软件包都是使用本地pip安装的。requirements.txt文件也在那里,但我只发布了一个摘要列表。@Azim我们应该避免将虚拟环境推送到git。如果有人想在本地安装它,他/她应该创建虚拟环境并安装您的软件包。