为什么拔出后virtualenv依赖全局python而不是局部python?

时间:2018-10-17 13:45:30

标签: python virtualenv

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

(fila_env) username@ASCSC-645A:~/CODES/.../myProject$ which python
>>> /usr/bin/python

我在Google上四处搜寻,但找不到一个好的解决方案。我想知道:

  1. 我如何保证如果有人拉这个项目,他们只会 使用提供的python库,而不是自己的python。
  2. 这是创建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

1 个答案:

答案 0 :(得分:2)

  1. 您不能也不应该,如果我使用32位Linux,并且您的virtualenv已在64位Windows上创建(反之亦然),则您的python二进制文件肯定对我不起作用。

  2. 再次,不。 virtualenv是开发人员的工具,而不是分发工具。为了进行分发,您应该考虑使用sdist/egg/wheel,或使用PyInstallerpy2exe或类似工具创建平台相关的二进制文件。