Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用uu init_uuupy.py不';行不通_Python_Visual Studio_Visual Studio Code - Fatal编程技术网

Python 使用uu init_uuupy.py不';行不通

Python 使用uu init_uuupy.py不';行不通,python,visual-studio,visual-studio-code,Python,Visual Studio,Visual Studio Code,我正在尝试一个结构如下的项目: root_folder ├── __init__.py ├── a_folder │   ├── __init__.py │   └── script_1.py ├── b_folder │   ├── __init__.py │   └── script_2.py └── script_3.py 我打开根文件夹上的IDE(VS代码)。我将空的\uuuu init\uuuu.py文件添加到子文件夹和根文件夹中。我还保存所有文件并重新启动IDE 但是,当我尝试在脚

我正在尝试一个结构如下的项目:

root_folder
├── __init__.py
├── a_folder
│   ├── __init__.py
│   └── script_1.py
├── b_folder
│   ├── __init__.py
│   └── script_2.py
└── script_3.py
我打开根文件夹上的IDE(VS代码)。我将空的
\uuuu init\uuuu.py
文件添加到子文件夹和根文件夹中。我还保存所有文件并重新启动IDE

但是,当我尝试在
脚本_2
中导入
脚本_1
时,出现错误:

# in script_2.py

from a_folder import script_1

ModuleNotFoundError: No module named 'script_1'
我也尝试了很多其他的方法,比如

# in script_2.py

from root_folder.a_folder import script_1

# Or

from .a_folder import script_1
但它们仍然不起作用。我到处都找了,但还是解决不了。你能给我一些提示吗?谢谢大家!

更新

以下是路径的一些打印结果:

# when I try to run script_2 in b_folder

print(os.path.abspath(''))
print(os.getcwd())

---/home/nick/Desktop/root_folder
---/home/nick/Desktop/root_folder


print(sys.path)

---
['/home/nick/Desktop/root_folder/b_folder', '/home/nick/anaconda3/envs/pytorch101/lib/python37.zip', '/home/nick/anaconda3/envs/pytorch101/lib/python3.7', '/home/nick/anaconda3/envs/pytorch101/lib/python3.7/lib-dynload', '/home/nick/anaconda3/envs/pytorch101/lib/python3.7/site-packages']


在导入语句之前,添加以下代码

import sys
sys.path.append("./")
这会将当前路径添加到工作区,然后您可以成功导入模块

这是我的项目截图,与你的文件夹结构相同

[编辑]

我假设您的cwd(当前工作目录)与我的一样位于根目录下。那么sys.path.append(“./”)应该可以工作

现在转到root_项目,在launch.json中添加以下代码:

"env": {
    "PYTHONPATH": "${workspaceFolder}",
},
"cwd": "${workspaceFolder}"
Python扩展将搜索根_项目下的模块,您可以直接导入模块:


更多详细信息请参阅和。

如果您仍在使用像Jetbrains Pycharm这样的IDE,请将文件夹“
根目录”设置为“源根目录”。如果您使用的是VSC,则可以执行相同的操作。
另一方面:

import sys
sys.path.append('your path')
可以手动将包添加到系统级的环境路径


祝你好运。

\uuuuu init\uuuuuy.py
将文件夹定义为一个模块<代码>从\u文件夹导入脚本\u 1
我怀疑您遇到了这样的问题:但我没有足够的信心将VTC作为副本Hi我认为这不是重复的脚本,原因有两个:第一,我尝试运行兄弟脚本,但不是父脚本。比如,如果我尝试运行
script_3.py
,那么您的链接就是答案。第二是。。。相对路径和绝对路径在这里都不起作用。。。不过还是非常感谢你的帮助!嗨,莫莉!非常感谢您的回复。我试过你的方法,但不管用。然后我根据你的建议做了一个修改:我使用
sys.path.append(“./root\u文件夹”)
。现在可以了!实际上我不知道为什么会发生这种情况,似乎
/
/root\u文件夹
,它们是一样的,对吗?你对此有什么建议吗?谢谢。我想您当前的工作目录不是终端中显示的\xxxx\root\u文件夹。这就是python扩展无法实现它的原因。建议转到当前项目文件夹,我将用第二个选项编辑我的答案,请看一下。谢谢你,莫莉!现在相对路径工作了!我可以再问一个问题吗?似乎我们只需要在这里使用
sys.append('./')
,对吗?因为在删除了
\uuuu init\uuuuuuuupy
之后,它仍然可以与
sys.append
完美地导入。似乎
\uuuu init\uuuuu.py
无法在VS代码中将文件夹正确地传输到模块中。我还更新了问题正文中的路径env。请随时检查。非常感谢。它起作用了!谢谢你!我想问一下:
\uuuu init\uuuuuuuupy
似乎无法将文件夹正确地转移到模块中,因此让我们跳过这个
sys.append
步骤,对吗?因为在我删除了所有的
\uuuu init\uuuu.py
之后,它仍然可以与sys.append完美地导入。你有什么建议吗?非常感谢。我还更新了问题主体中的路径env。请随时检查。非常感谢。