很抱歉,这个问题已经回答了,但是我找不到我的问题的答案...我想让两个单独的脚本可调用。让我用一个例子详细解释一下。
我有一个类似于下面的目录结构:
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.py
和script.py
才能正常工作?
发布于 2019-05-24 05:48:26
在你的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
,它会将路径更改为目录,然后将其导入。
有了这个,它应该可以在这两种情况下工作。希望这能有所帮助。:)
发布于 2019-05-24 05:42:11
在第二个场景中,您可以在主目录中导入“python3 subdir.script”
https://stackoverflow.com/questions/56282813
复制相似问题