Python无法导入同一文件夹中的.py文件。

huangapple go评论63阅读模式
英文:

Python cannot import py files in the same folder

问题

以下是您要翻译的内容:

  • VSCode 版本:1.41.1
  • 操作系统版本:Ubuntu 18.04

重现步骤:

# 目录结构:
.
├── demo1
│   ├── __init__.py
│   └── test.py
├── __init__.py
├── auto.py
# auto.py
def func():
    print("1")
# test.py
from auto import func

func()

使用示例来解决项目中出现的问题
运行 test.py 文件,我得到 "ModuleNotFoundError: No module named 'func'" 错误
我在 test.py 中使用 'CTRL' + 鼠标左键跳转到 func
在 PyCharm 中可以运行相同的代码。

英文:
  • VSCode Version: 1.41.1
  • OS Version:Ubuntu 18.04

Steps to Reproduce:

# tree:
.
├── demo1
│   ├── __init__.py
│   └── test.py
├── __init__.py
├── auto.py
# auto.py
def func():
    print("1")
# test.py
from auto import func

func()

Use examples to solve problems that arise in a project
Run the test.py file, and I get "ModuleNotFoundError: No module named 'func'"
I used 'CTRL '+ left mouse button in test.py to jump to func
The same code can be run in pycharm

答案1

得分: 3

如果您直接运行test.py,那么您需要将父文件夹添加到PYTHONPATH。尝试:

import sys
sys.path.append("..\<parent_folder>")
from auto import func

否则,如果您只想在另一个.py文件中导入test.py,您可以使用相对导入的方式:

from . import auto  # 使用另一个点'.'来上溯两个包
auto.func()

参考链接

英文:

If you run test.py directly then you need to add the parent folder to PYTHONPATH. Try:

import sys
sys.path.append(&quot;..\&lt;parent_folder&gt;&quot;)
from auto import func

Otherwise, if you merely want to import test.py in another .py file, you can use relative import of python

from . import auto #another dot &#39;.&#39; to go up two packages
auto.func()

Reference

答案2

得分: 0

从...导入自动,并使用auto.func()调用函数。

英文:

Simple one-line solution

from ... import auto

and call the function by using auto.func().

答案3

得分: 0

将以下内容添加到test.py中,在导入之前:

import sys
sys.path.insert(0, "/path/to/project/root/directory")

对我来说,这不是一个好的文件组织方式。一个更好的做法可能如下所示:

让你的项目文件树如下:

.
├── __init__.py
├── lib
│   ├── auto.py
│   └── __init__.py
└── test.py

并像这样编写test.py:

from lib.auto import func

func()
英文:

Add this in test.py, before import:

import sys
sys.path.insert(0, &quot;/path/to/project/root/directory&quot;)

For me it's not a good file organization. A better practice might be as below:

Let your project file tree be like:

.
├── __init__.py
├── lib
│   ├── auto.py
│   └── __init__.py
└── test.py

And write test.py like:

from lib.auto import func

func()

huangapple
  • 本文由 发表于 2020年1月3日 15:57:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/59575018.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定