Visual Studio 代码的调试器和 pipenv
Visual Studio Code's debugger & pipenv
我想使用 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
这是 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
但是,我已经使用 pipenv 安装了 flask。当我不使用调试器时,没有模块错误。
这是我的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()
我在网上搜索了一下,发现应该把我的.venv文件夹放在项目目录下。于是,我操作了这条命令。
export PIPENV_VENV_IN_PROJECT=1
现在我的目录结构是这样的。
.
├── main.py
├── Pipfile
├── Pipfile.lock
├── .venv
└── templates
└── index.html
但是,我收到相同的错误消息。
然后,我又上网搜索了一下,这次设置了vs code的python venv路径,还是一样的错误信息。
你能给我一些信息或建议吗?
提前致谢。
此致 Kazu
有时问题甚至不是导入。
如果在显示相同异常之前加载的文件存在语法错误。
如果您查看屏幕的左下角,您会注意到您当前 运行 针对的是 Python 的 pyenv 安装,而不是 pipenv 虚拟环境。如果您单击解释器名称和 select 安装 flask 的适当环境,它应该可以解决您的问题。
我想使用 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
这是 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
但是,我已经使用 pipenv 安装了 flask。当我不使用调试器时,没有模块错误。
这是我的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()
我在网上搜索了一下,发现应该把我的.venv文件夹放在项目目录下。于是,我操作了这条命令。
export PIPENV_VENV_IN_PROJECT=1
现在我的目录结构是这样的。
.
├── main.py
├── Pipfile
├── Pipfile.lock
├── .venv
└── templates
└── index.html
但是,我收到相同的错误消息。
然后,我又上网搜索了一下,这次设置了vs code的python venv路径,还是一样的错误信息。
提前致谢。
此致 Kazu
有时问题甚至不是导入。 如果在显示相同异常之前加载的文件存在语法错误。
如果您查看屏幕的左下角,您会注意到您当前 运行 针对的是 Python 的 pyenv 安装,而不是 pipenv 虚拟环境。如果您单击解释器名称和 select 安装 flask 的适当环境,它应该可以解决您的问题。