python - 在 VSCode 中从另一个 python 文件导入一个 python 文件
问题描述
我已经看到很多尝试解决这个问题,但没有得到它适合我。我喜欢 VSCode——它好看、轻巧、快速。但我无法理解他们是如何使 import 语句如此令人困惑的。就上下文而言,我来自 Pycharm,那里一切正常(等待程序启动 10 分钟后)。
所以,我有一个看起来像这样的文件夹结构:
当前交互的工作方式:
- a.py 和 b.py 可以通过以下方式相互导入:
import (a|b).py
- a.py 和 b.py 可以用 c.py 和 d.py 导入就好了:
from folder(1|2) import (c|d).py
- c.py 和 d.py 不能使用 a.py 或 d.py 导入:(对于与
from . import (a|b).py
此类似性质的其他问题,这是推荐的解决方案) - c.py 和 d.py 不能相互导入:(
from .folder(1|2) import (c|d).py
我很确定这里的语法是错误的)
我当前的 settings.json 是:
"python.pythonPath": "c:\\dev\\workspace-vscode\\Python\\Personal\\importTesting\\venv\\Scripts\\python.exe"
我的launch.json是:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}"
}
]}
我见过涉及 .env 文件的解决方案,但他们从未解释将文件放在哪里。另外,什么是工作区文件夹?这在哪里解决?它被认为是根文件夹吗?
还有一点需要注意的是,我使用的实际 import 语句是:from Code.WordAnalysis.wordsAndLetters import word_count
,除非您查看我的代码(我在下面链接到),否则我理解这对您没有任何意义。但有趣的是,它可以在 Pycharm 中运行而不费吹灰之力。这种行为让我认为这是一些参考问题 - 可能是错误的。
上面的 import 语句吐出这个错误:
Traceback (most recent call last): File "c:\dev\workspace-vscode\Python\WorkRelated\ITTechTalk\Code\PasswordStrengthCalculators\passwordstrengthreal.py", line 1, in <module> from Code.WordAnalysis.wordsAndLetters import word_count ModuleNotFoundError: No module named 'Code'
如果您想查看我的存储库,可以在这里找到:https ://github.com/TJMcButters/workspace-vscode/tree/master/Python/WorkRelated/ITTechTalk
对此的任何帮助将不胜感激!这让我疯狂。
解决方案
对案例 3 和 4 的回应:
直接运行脚本时,不可能从其父目录导入任何内容。
我的方法是避免编写必须从父目录导入的脚本。在必须发生这种情况的情况下,首选的解决方法是修改sys.path
.
您可以通过执行以下操作添加要在运行时中导入模块的目录:
import sys
sys.path.append("dir_from_which_to_import")
我建议你看看这个材料 - https://chrisyeh96.github.io/2017/08/08/definitive-guide-python-imports.html。
推荐阅读
- angular - 如何将自定义过滤结果传递给原始组件?
- mongodb - 对象上的 MongoDB $setUnion ($setUnion 但带有附加信息)
- android - 是否可以在不使用 android.permission.INTERNET 的情况下监听 ServerSocket?
- java - 在tomcat上部署后从war文件中获取图像
- maven - 在构建过程中运行 mvn checkstyle 时构建成功
- angular - 使用 npm 命令更改样式表
- ruby-on-rails - 为购买的主题覆盖 /dist 或 /src - Rails
- windows - 提交特定路径时在提交后挂钩中运行命令
- excel - SUMIFS 中的动态总和列
- c# - Xamarin.iOS 新的默认项目模板应用显示错误:SecTaskLoadEntitlements failed error=22