#python #python-3.x
#python #python-3.x
Вопрос:
Я закончил писать приложение на Python, которое отлично работает при запуске из VSCode, однако при попытке запуска из терминала оно не запускается.
Ошибка, которую я получаю,:
SQLConnString = 'Driver={ODBC Driver 17 for SQL Server};Server=' SQLServer ';Database=' SQLDatabase ';UID=' SQLLogin ';PWD=' SQLPassword
TypeError: can only concatenate str (not "NoneType") to str
Это, очевидно, совершенно ясно, в нем указано, что, по крайней мере, одна из этих переменных ( SQLServer
, SQLDatabase
, SQLLogin
или SQLPassword
) имеет значение None
, и поэтому конкатенация завершается ошибкой. Это я понимаю.
Однако я не понимаю, что эти переменные определены и загружены до:
SQLServer = os.getenv('SQL_SERVER')
SQLDatabase = os.getenv('SQL_DATABASE')
SQLLogin = os.getenv('SQL_LOGIN')
SQLPassword = os.getenv('SQL_PASSWORD')
И, как я уже упоминал, если я нахожусь в VSCode и запускаю файл python, тогда файл запускается нормально и работает; ошибок нет. Итак, есть кое-что, что отличается от того, что я отлаживаю его в VSCode и запускаю python3 ./mypythonfile.py
в bash.
Чего мне здесь не хватает, почему значение файла среды не переносится в переменные, когда я запускаю его из командной строки, но когда я запускаю его из VSCode. Это не имеет смысла. Почему поведение отличается; один нефункциональный, а другой работает нормально.
К сожалению, поиск таких вещей, как «python3 не загружает файл .env в cli», приводит меня к источникам, которые сообщают мне, как создавать / использовать .env
файлы; У меня есть файл, и он работает, но, похоже, просто не в CLI, и я не понимаю почему. Очевидно, я упускаю что-то очевидное, но когда он работает в VSCode, я ожидаю, что он должен работать из CLI.
Я также пробовал это на 2 разных устройствах, тот же результат. Работает нормально в VSCode, но не может быть запущен из командной строки.
Ответ №1:
Нашел ответ. Я импортирую другие файлы, которые также используют данные из файла среды. В VSCode при отладке вам не load_dotenv()
нужны отдельные файлы, однако они нужны при запуске из python3. Я предполагаю, что это ошибка в отладчике.