如何导入已从父脚本导入的库?

2024-03-29 15:45:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道该如何解释这个问题。。。在

但我在试着运行一个主脚本(主.py),它将导入多个库(如“os”模块),并且此脚本应导入另一个子脚本(儿童.py). 在

问题是儿童.py'必须使用此'os'模块,但它无法从'主.py'. 在

我想逃跑主.py'然后得到: NameError: name 'os' is not definied.

我的目录结构:

main/
|__ main.py
|__ sub/
    |__ child.py
    |__ __init__.py

在[主.py]内容:

^{2}$

在[儿童.py]内容:

def function:
    os.system('clear')
    <more code that require 'os' module>

我错过了什么? 我正在尝试从中导入所有库主.py'为了避免在运行另一个脚本时等待太久(不希望他们在之后导入大量库,我希望从主文件导入所有内容)。在


Tags: 模块namepy目录脚本child内容is
0条回答
网友
1楼 · 发布于 2024-03-29 15:45:43

I'm trying to import all libraries from the 'main.py' to avoid waiting to much when running another scripts (don't want them importing a lot of libraries after, I want to import everything from the main file).

这不是它的工作原理。您应该在实际使用它的模块中导入一个模块,并且只在那里。在

因此您需要导入子模块中的os模块才能使用它:

# child.py
import os

def function():
    os.system('clear')
    # more code that uses `os`

如果不在main.py中实际使用os,则不应该在那里导入它:

^{pr2}$

同样是@user10987432指出的;如果您担心import语句会减慢代码的速度,那么您的优先级就混淆了。这不仅是一种过早优化的形式,而且最重要的是,很难想象一个import语句是瓶颈的时候,也就是说,它可能不可能,而且是一个没有问题的问题。在

网友
2楼 · 发布于 2024-03-29 15:45:43

我认为您的代码中最初没有import os行,但是您在源代码中更正了这一点并重新导入了文件。在

问题是Python缓存模块。如果导入不止一次,则每次返回同一模块时-它不会被重新读取。你第一次导入时犯下的错误将继续存在。在

重新导入图像工具.py文件编辑后,必须使用重新加载(imtools)。在

相关问题 更多 >