Почему virtualenv полагается на глобальный питон, а не на локальный, после того, как его вытащили?

Я вытащил (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

Я погуглил вокруг, но не смог найти хорошего решения для этого. Я бы хотел знать:

  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 ответ

Решение
  1. Вы не можете и не должны делать это. Если я использую 32-битный Linux и ваш virtualenv был создан на 64-битной Windows (или наоборот), то ваш двоичный файл python определенно не будет работать для меня.

  2. Опять нет. virtualenv - инструмент разработчика, а не инструмент распространения. Для распространения вы должны рассмотреть sdist/egg/wheel или создание зависимых от платформы двоичных файлов с помощью PyInstaller, py2exe или аналогичных инструментов.

Другие вопросы по тегам