Visual Studio Code отладчик и pipenv - PullRequest
0 голосов
/ 25 января 2020

Я хотел бы использовать отладчик кода Visual Studio для отладки моего python кода, но возникает исключение. Я использую Windows 10, WSL, Debian, Python 3.7.6.

Exception has occurred: ModuleNotFoundError
No module named 'flask'
  File "/home/kazu/test/main.py", line 2, in <module>
    from flask import Flask

ModuleNotFound

Это python запись консоли отладчика.

pyenv shell 3.7.6
/home/kazu/.pyenv/versions/3.7.6/bin/python /home/kazu/.vscode-server/extensions/ms-python.python-2020.1.58038/pythonFiles/ptvsd_launcher.py --default --client --host localhost --port 52440 /home/kazu/test/main.py 
kazu@D:~/test$ pyenv shell 3.7.6
kazu@D~/test$ /home/kazu/.pyenv/versions/3.7.6/bin/python /home/kazu/.vscode-server/extensions/ms-python.python-2020.1.58038/pythonFiles/ptvsd_launcher.py --default --client --host localhost --port 52440 /home/kazu/test/main.py 

Однако я уже установил flask используя pipenv. Когда я не использую отладчик, нет ошибки модуля.

Это мой main.py

from __future__ import unicode_literals
from flask import Flask
from flask import render_template
from flask import request
from flask import send_file
import os
import youtube_dl

app = Flask(__name__)

@app.route("/", methods=['POST', 'GET'])
def index():
    if request.method == "POST":
        if os.path.exists("/tmp/output.mp4"):
            os.remove("/tmp/output.mp4")
        else:
            print("Can not delete the file as it doesn't exists")
        url = request.form['url']
        ydl_opts = {'outtmpl': '/tmp/output.mp4', 'format':'bestvideo[ext=mp4]'}
        with youtube_dl.YoutubeDL(ydl_opts) as ydl:
            ydl.download([url])

        return send_file("/tmp/output.mp4",as_attachment=True)
    else:
        return render_template("index.html")

if __name__ == "__main__":
    app.run()

Я искал Inte rnet и обнаружил, что должен поставить свой Папка .venv в каталоге проекта. Итак, я выполнил эту команду.

export PIPENV_VENV_IN_PROJECT=1

и теперь моя структура каталогов такая.

.
├── main.py
├── Pipfile
├── Pipfile.lock
├── .venv
└── templates
    └── index.html

Однако я получаю то же сообщение об ошибке.

Затем я снова искал Inte rnet, и на этот раз я установил против python путь venv кода, но я получил то же сообщение об ошибке.

python_venv Не могли бы вы дать мне какую-либо информацию или предложение?

Заранее спасибо.

С уважением, Казу

Ответы [ 2 ]

1 голос
/ 29 января 2020

Если вы посмотрите в нижний левый угол экрана, вы заметите, что в настоящее время вы используете установку Python с pyenv, а не виртуальную среду pipenv. Если вы щелкнете по имени переводчика и выберете соответствующую среду, в которой вы установили flask, это должно исправить вашу проблему.

0 голосов
/ 25 января 2020

Иногда проблема даже не в импорте. Если у вас есть синтаксическая ошибка в файле, который загружен до отображения того же исключения.

...