После двух дней борьбы, я нашел решение, которое я опубликую ниже, однако мне очень хотелось бы услышать комментарии, альтернативы и прямую школу «ты идиот».
Кажется, необходимы два элемента:
- Указание версии Python для использования в качестве версии, связанной с виртуальной средой (как я пытался безуспешно).
- Активация виртуальной среды.
Я изменил свой файл .command на это, добавив несколько ненужных проверок проверки версии python до и после ее указания и связанного с ней вывода текста:
my_batch.command:
#!/usr/bin/env bash
echo "VERIFY: Python version BEFORE activating virtual environment:"
which python
echo "Activating conda virtual environment..."
source activate my_env_name
echo "Setting python version to use in this environment..."
#!/Users/my_username/anaconda3/envs/my_env_name/bin/python
echo "VERIFY: Python version AFTER activating virtual environment:"
which python
cd "$(dirname "$0")" # set the working directory as the command file locations
echo "RUN THE SCRIPT:"
my_entry_name <script arguments>
Ключевой строкой, которую я пропустил, была source activate my_env_name
. Я проверил, что удаление этого приводит к сбою, и это должно быть включено каждый раз, а не только один раз, таким образом, включено в мой файл .command.
Мне также не было ясно, что было бы нормально иметь несколько строк Шебанга, но это сработало нормально.
Я рад, что снова функционирую, но должен признать, что разочарован тем, что архитектура не просто заставляет мою точку входа работать, и точка, без этой грубости. Причина для того, чтобы иметь точку входа, состоит в том, чтобы позволить потребителю скрипта легко вызывать его, и не нужно заботиться о таких деталях, как, где находится скрипт и как он установлен. Использование виртуальной среды, кажется, устраняет эти удобства точки входа. Я за преимущества использования виртуальных сред, но есть ли какой-нибудь способ съесть свой пирог и съесть его тоже? В идеале вызов точки входа активировал бы виртуальную среду и знал бы, какую версию python использовать. Есть ли какой-нибудь лучший способ сделать это?