Конфликтующие среды Python, когда код запускается через различные методыPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Конфликтующие среды Python, когда код запускается через различные методы

Сообщение Anonymous »

Я запускаю WSL: Ubuntu через VSCODE. В терминале у меня есть виртуальная среда, .venv, активирована. Бэкэнд. Я могу запустить приложение Flask независимо через Flask -App Py/Routes -debug run и иметь функцию, настроенную в файле «main.js» в приложении электронов, который позволяет двум работать одновременно, как: < /p>

Код: Выделить всё

flaskProc = require('child_process').spawn('py', ['./py/routes.py']);
flaskProc.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
< /code>
Файлы структурированы так, чтобы электронное приложение было в родительской папке, а в этой папке находится папка, называемая «py», которая содержит все файлы для приложения Flask, и «.venvv " папка. Для простоты все маршруты, указывающие на папку «.venv» и ее дети, будут сокращены до «[...]/py/.venv/»
 Проблема 
Это происходит, когда я запускаю приложение Electron с NPM Start 
через терминал, приложение Flask также работает. Когда я делаю это, дается следующая ошибка: < /p>

Код: Выделить всё

stderr:     from jsonschema import validate
ModuleNotFoundError: No module named 'jsonschema'
I Ran Ran Pip freeze> tedding.txt и обнаружил, что «jsonschema» был, действительно,

Попытки Решите < /h2>
Я подозревал, что это была некоторая ошибка, вызванная неправильной установкой модуля, и добавил следующие строки в приложение Flask и запустили его независимо: < /p>

Код: Выделить всё

import sys

print("Executing in", sys.executable)
if "jsonschema" in sys.modules:
print("JSONSchema is in the modules")
else:
print("jsonschema isn't in the modules")
< /code>
Это печатает: < /p>
Executing in [...]/py/.venv/bin/python3
JSONSchema is in the modules
Проверка интерпретатора, он имел выбранного интерпретатора как «[...]/py/.venv/bin/python3.10», поэтому я изменил его на Python3 и перезапущенный VSCode. Я еще раз активировал виртуальную среду и независимо запустил приложение Flask, которое все еще указывало на Python3, затем запустил приложение Electron, которое все еще дало ошибку. Я снова проверил интерпретатора и обнаружил, что, хотя выбранное интерпретатор «[...]/py/.venv/bin/python3», интерпретатор рабочей области все еще остается "[...]/py/.venv/bin/python3 .10 "< /p>

< /p>
и когда я попытался запустить Pip install jsonschema < /code> и Python -m Pip Install Jsonschema , я получил следующие сообщения:

Код: Выделить всё

Requirement already satisfied: jsonschema in ./py/.venv/lib/python3.10/site-packages (3.2.0)
Requirement already satisfied: six>=1.11.0 in ./py/.venv/lib/python3.10/site-packages (from jsonschema) (1.17.0)
Requirement already satisfied: attrs>=17.4.0 in ./py/.venv/lib/python3.10/site-packages (from jsonschema) (25.1.0)
Requirement already satisfied: setuptools in ./py/.venv/lib/python3.10/site-packages (from jsonschema) (59.6.0)
Requirement already satisfied: pyrsistent>=0.14.0 in ./py/.venv/lib/python3.10/site-packages (from jsonschema) (0.20.0)
< /code>
, которые говорят, что они устанавливают в Python3.10. Это подтверждается при использовании Python -m Pip Show jsonschema 
, в котором говорится, что местоположение "[...]/py/.venv/lib/python3.10/site -packages"
edit:
Запуск ls -la py/.venv/bin/python* дает:

Код: Выделить всё

lrwxrwxrwx 1    7 Feb 18 11:46 py/.venv/bin/python -> python3
lrwxrwxrwx 1   16 Feb 18 11:46 py/.venv/bin/python3 -> /usr/bin/python3
lrwxrwxrwx 1    7 Feb 18 11:46 py/.venv/bin/python3.10 -> python3
< /code>
, который показывает, что /python и /python3.10 указывают на «python3», а /python3 указывает на " /usr /bin /python3". Я думаю, что это означает, что Python3.10 является ветвью Python3, поэтому проблема в том, что файл «routes.py», работающий в Python3 Имея это в виду, я попытался запустить: py/.venv/bin/python3 -m pip install jsonschema 
для установки модуля в специфически в Python3, но получил то же «требование уже удовлетворенное», как и раньше, сбивая меня с толку Кроме того. В ", sys.executable) проводятся через электронное приложение, которое дает:

Код: Выделить всё

Executing in C:\Python312\python.exe
jsonschema isn't in the modules
Так что это фактическая проблема: По какой -то причине приложение Flask выполняется на другом интерпретаторе при запуске через электронное приложение, чем при запуске независимо. c: \ Python312 \ python.exe является маршрутом для интерпретатора Python по умолчанию, поэтому я изменил его под прицелом рабочей области, чтобы указать на "[...]/py/.venv/bin/python3" как колба sys.secutable, но ничего не изменилось. >

Код: Выделить всё

The setting has also been modified in the following scopes:

- Remote
- User
< /code>
Поэтому я попытался изменить пути интерпретатора удаленного и пользователя по умолчанию, но это ничего не сделало. < /p>
Почему электронное приложение не работает на Правильный переводчик? Почему он работает на C \ python312 \ python.exe 
конкретно? И как мне изменить его для запуска "[...]/py/.venv/bin/python3"?


Подробнее здесь: https://stackoverflow.com/questions/794 ... s-suspecte
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»