如何正确调用Python中其他目录中定义的函数?

2024-04-25 11:51:01 发布

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

对不起,这已经得到了肯定的回答,但我找不到我的问题的答案。。。我想让两个单独的脚本可以调用。让我用一个例子详细解释一下。你知道吗

我的目录结构类似于:

maindir
|- subdir
|   |- script.py
|   `- myfunc.py
`- main.py

包括以下内容:

myfunc.py中有

def myverynicefunc():
    print('Hello, I am your very nice func :)')

script.py中有

import myfunc

def scriptfunc():
    print('I am the script function :)')

myfunc.myverynicefunc()

main.py中有

from subdir.script import scriptfunc

scriptfunc()

如果我转到subdir目录并执行它工作的脚本,我的意思是:

.../main_dir/subdir$ python3 script.py 
Hello, I am your very nice func :)

但是,如果我尝试执行main.py脚本,它将失败:

.../main_dir$ python3 main.py 
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    from subdir.script import scriptfunc
  File "/home/alf/Escritorio/main_dir/subdir/script.py", line 1, in <module>
    import myfunc
ModuleNotFoundError: No module named 'myfunc'

如果我将script.py的内容修改为

from . import myfunc

def scriptfunc():
    print('I am the script function :)')

myfunc.myverynicefunc()

现在情况正好相反,main.py脚本工作正常:

.../main_dir$ python3 main.py 
Hello, I am your very nice func :)
I am the script function :)

但是script.py脚本失败:

.../main_dir/subdir$ python3 script.py 
Traceback (most recent call last):
  File "script.py", line 1, in <module>
    from . import myfunc
ImportError: cannot import name 'myfunc'

有没有办法同时调用main.pyscript.py来工作?你知道吗


Tags: frompyimport脚本maindefdirscript
2条回答

在第二种情况下,您可以 python3-c“导入细分脚本“在主目录中

在你的script.py里试试这个-

import sys
current_path = sys.path[0]
if current_path.split('/')[-1] != 'subdir':
    sys.path.insert(0, current_path+'/subdir/')
    import myfunc

这样,如果python的当前目录是文件的父目录,即maindir,它将更改目录的路径,然后导入它。你知道吗

这样,它应该可以在两种情况下工作。希望这有帮助。:)

相关问题 更多 >