英文:
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("..\<parent_folder>")
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 '.' to go up two packages
auto.func()
答案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, "/path/to/project/root/directory")
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()
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论