我试图从不同的路径导入模块,但它返回的错误是“找不到模块”。它从执行脚本的目录导入模块,但不会更改目录并从该目录导入。在
print(os.getcwd())
当我运行这个函数时,在它抛出找不到模块的错误之前,它将输出父目录,因此我将使用test\import\modules。在
我将在\import\中运行一个脚本,从\import\导入test_0.pyd,从\modules导入test_1.pyd(测试.py测试单元0位于\import\中,测试单元1位于\modules中。另外,我尝试过相对导入,每个目录都包含init.py)。在
^{pr2}$所以我运行print命令,它返回它试图从test\导入,我已经尝试过更改目录,但是当我打印时,它会说工作目录改变了,但是仍然输出它找不到模块。非常感谢任何帮助,谢谢。在
编辑http://prntscr.com/6ch7fq-正在执行测试.py http://prntscr.com/6ch80q-导入目录
在上述模块/目录中是否有
__init__.py
文件?这是python将其视为一个包所必需的。在退房What is __init__.py for?
当您从一个目录启动python时,该目录会被添加到您的
PYTHONPATH
中,这样模块就可以从该目录及以下目录导入,前提是每个目录中都有一个__init__.py
,包括运行python的顶层。请看这里:~/Development/imports $ tree . ├── __init__.py ├── mod1 │ ├── __init__.py │ ├── a.py ├── mod2 │ ├── __init__.py │ ├── b.py ├── top.py
因此,当我们从}:
~/Development/imports/
启动python时,我们可以访问top
mod1.a
和{但是当我们从}:
^{pr2}$mod1
内部启动python时,我们不允许从mod1
外部返回top
或{相对导入
from ..mod2 import b
只能从您开始的顶层模块下面的模块中工作,因为它们都隐式地位于python路径中。在除非将特定路径添加到
PYTHONPATH
或sys.path
,否则无法从开始的模块的外部转义:因此,您需要确保所有目录中都有一个
__init__.py
文件。您还需要确保从正确的位置(通常是顶层目录)启动python。您不能在目录结构的一半位置启动python,然后期望返回到顶部,或者侧向到另一个目录/模块。在相关问题 更多 >
编程相关推荐