Как выполнить скрипт Python в виртуальной среде, используя двоичный путь Python? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть среда python (это может быть conda, virtualenv, venv или global python) - у меня есть сценарий python - hello.py - который я хочу выполнить в этой среде.

Если я получу путь к двоичному файлу python в среде, например, в окнах с окружением conda, называемым myenv, /path/to/myenv/Scripts/python.exe, и если я выполню скрипт с использованием этого питона, как показано ниже, яЯ гарантировал, что скрипт выполняется в этой среде, независимо от типа виртуальной среды?Если нет, что я могу сделать, чтобы обеспечить такую ​​гарантию?

/path/to/myenv/Scripts/python.exe path/to/hello.py

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Я подозреваю, что нет.Существует несколько переменных среды (например, PATH), которые изменяются при активации virtualenv.Вы можете открыть myenv/bin/activate в текстовом редакторе, чтобы посмотреть, что он делает.

Есть ли конкретная причина, по которой вы хотите напрямую вызывать исполняемый файл, а не использовать среду, как задумано?(например, . ./myenv/bin/activate; python hello.py)

0 голосов
/ 05 февраля 2019

Да, вы правы!Кроме того, вы можете оценить используемый исполняемый файл, используя следующий фрагмент:

import sys

print(sys.executable)

Тогда вы увидите абсолютный путь, например, /opt/miniconda/envs/epm/bin/python.

Если вы используете систему Unix,Вы можете запустить:

$ echo "import sys; print(sys.version); print(sys.executable)" | /opt/miniconda/envs/epm/bin/python
2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 13:10:39)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
/opt/miniconda/envs/epm/bin/python
...