【问题标题】:Unable to find/ import .py file in the same directory Visual Studio Code无法在同一目录 Visual Studio Code 中找到/导入 .py 文件
【发布时间】:2020-12-07 01:51:55
【问题描述】:

我一直在互联网上,花了几个小时试图解决这个问题。这可能是一件非常简单的事情,所以请让我放松一下。这是我第一次使用 Visual Studio Code。我已经尝试过以下链接中提供的解决方案:

  1. VS Code - pylinter cannot find module
  2. vscode import error for python module
  3. Can't get VSCode/Python debugger to find my project modules
  4. https://code.visualstudio.com/docs/python/environments

My folder structure looks like this:

我正在尝试运行 urls.py 文件,该文件尝试使用 -

导入视图文件
from . import views

但我收到以下错误:

Traceback(最近一次调用最后一次): 文件“c:/Users/abc/projects/telusko/calc/urls.py”,第 7 行,在 从 。导入视图 ImportError:无法导入名称“视图”

我已经尝试了所有可能的组合,目前我的 launch.json 文件如下所示:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }],
    "env": {"PYTHONPATH": "c:/Users/abc/projects/telusko/"},
    "python.pythonPath": "c:/Users/abc/Envs/test/Scripts/python.exe" 
}

我正在使用虚拟环境来运行这个项目,环境位于 - “c:/Users/abc/projects/telusko/test/”

而我的项目目录位于-

“c:/Users/abc/projects/telusko/”

【问题讨论】:

  • PYTHONPATH 不应指向可执行文件,而应指向项目的根目录,然后(用冒号分隔)其他要查找的位置。
  • 试过了,不行。更新了上述代码以反映最新版本的 launch.json 文件。
  • 这可能是VS spacevim.org的替代品
  • 嗨@Armagon,你能详细说明一下吗?
  • 这有助于解决您的问题吗? stackoverflow.com/questions/9252543/…

标签: python python-3.x django visual-studio visual-studio-code


【解决方案1】:

我创建了一个与你的文件夹结构相同的项目,venv在文件夹test下被称为env。

urls.py和views.py是同级模块,所以import语句应该是

from views import *

os.getcwd() 方法是显示你当前的工作目录。

【讨论】:

  • 嗨,莫莉,你是说我应该将我的 env 文件夹移动到项目文件夹吗?因为目前他们在不同的位置?您能否详细说明您是如何获得 env (venv) 文件夹/文件的。
  • 嗨,莫莉,我试着按照你的指示 - 将我的 venv 移动到项目根目录下。但我仍然遇到同样的错误。
  • 不,在你的问题中,你说环境位于 c:/users/abc/projects/telusko/test,所以我把我的 venv 放在 telusko/test 下,主要是复制和重新创建你的错误。先不说env,让我检查一下,你想在calc/urls.py中导入views.py,对吧?请注释 calc/urls.py 中的所有其他代码,然后运行 ​​import os print (os.getcwd()) 并显示输出
  • 在 calc/urls.py 我有以下代码: --- from django.urls import path import os print(os.getcwd()) from views import * urlpatterns = [ path('' , views.home, name='home') ] ---- 我得到的输出是这个 ___ (test) C:\Users\abc\projects\telusko>c:/Users/abc/Envs/test/Scripts/ python.exe c:/Users/abc/projects/telusko/calc/urls.py C:\Users\abc\projects\telusko Traceback(最近一次调用最后):文件“c:/Users/abc/projects/telusko/ calc/urls.py",第 7 行,在 path('', views.home, name='home') NameError: name 'views' is not defined
  • 尝试运行我答案截图中的代码,如果仍然出错,尝试使用 from calc.views import *
【解决方案2】:

您需要确保打开 VS Code 的文件夹与您打开的文件是同一个文件夹。您已打开 TELUSKO 并有权访问该目录中的所有文件夹/文件。但是 urls.py 在 calc 目录中。

looks 就像您的 VS Code 目录是 TELUSKO,其中包含文件夹和文件:

  • .idea/
  • .vscode/
  • 计算/
  • telusko/
  • db.sqlite3
  • manage.py

因此,您打开的任何文件都只能访问这些文件夹/文件。即使您在不同的目录中打开文件。

要对此进行测试,请输入 import manage,即使 calc/ 目录中没有 manage.py 文件,您也会看到它可以工作。

您有 2 个解决方案:

  1. 在 calc/ 目录中打开一个新的 VS Code 窗口。然后您可以运行import viewsimport appsimport test... calc/ 中的所有文件现在都可供您使用!
  2. 进行绝对导入。您当前的目录是 TELUSKO/,from calc import views 也是如此。

【讨论】:

    【解决方案3】:

    我的回答可能措辞不佳,所以让我更清楚一点。

    我建议使用 VIM 替代您的整个流程。
    不需要 VScode 或任何其他 IDE,不需要 Pylint,也不需要创建任何虚拟环境。

    尝试通过将其全部替换为 VIM 来简化您在创建此“虚拟环境”时导致错误“无法在同一目录 Visual Studio Code 中找到/导入 .py 文件”的任何问题。

    当我说“这将需要您进行额外的工作和研究”时,这是因为 Idk 是否可以将 VIM 配置为执行 Pylint 可以做的所有事情,因为我不知道 Pylint 可以做什么。

    你可以看看这个:https://realpython.com/vim-and-python-a-match-made-in-heaven/

    如果您有兴趣: 编辑:链接替换为直接 GitHub 存储库 https://github.com/vim/vim-win32-installer/releases

    这可能是您应该注意和考虑的事情: VIM 是为 LINUX 设计的,因此您将来可能遇到的问题可能会导致您更难找到“Windows”解决方案。

    【讨论】:

    • @kiedi-如果您尝试过之前的安装,请丢弃并改用 GitHub 存储库
    • 谢谢@armagon,我会试试这个
    • 我不认为迁移到 VI 编辑器是一个好的建议。这是关于地球上最糟糕的编辑恕我直言。我对从像 VS Code 这样的 IDE 迁移到像 vi​​m 或 vi 这样的深奥难用的编辑器不感兴趣。我宁愿放弃编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    相关资源
    最近更新 更多