Почему 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
Я погуглил вокруг, но не смог найти хорошего решения для этого. Я бы хотел знать:
- Как я могу заверить, что если кто-то потянет этот проект, он будет использовать только предоставленную библиотеку 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
1 ответ
Вы не можете и не должны делать это. Если я использую 32-битный Linux и ваш virtualenv был создан на 64-битной Windows (или наоборот), то ваш двоичный файл python определенно не будет работать для меня.
Опять нет. virtualenv - инструмент разработчика, а не инструмент распространения. Для распространения вы должны рассмотреть sdist/egg/wheel или создание зависимых от платформы двоичных файлов с помощью PyInstaller, py2exe или аналогичных инструментов.