我目前的项目有如下结构:
src:
file1.py
file2.py
file2中有一些函数我想导入到file1中并使用。 因此文件1有以下几行:
from file2 import func1, func2
在src目录中运行终端时,键入:
from file1 import *
一切都很顺利。 但是,当转到目录src之外并键入python终端时
from src.file1 import *
出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/bhavincvts/Desktop/greenleap/solarAFD1/src/file1.py", line 3, in <module>
from file2 import func1, func2
ModuleNotFoundError: No module named 'file2'
之后,我尝试将import语句更改为,
from .file2 import func1, func2
然后,它在src文件夹之外可以很好地工作。 但在src文件夹内运行终端时,它显示以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/bhavincvts/Desktop/greenleap/solarAFD1/src/file1.py", line 3, in <module>
from .file2 import func1, func2
ImportError: attempted relative import with no known parent package
有办法解决这个问题吗?
明白了;
文件1.py:
from file2 import func1, func2
func1()
func2()
file2.py具有以下功能:
def func1():
print('yeeeeah func1')
def func2():
print('yeeeah func2')
src:__init__.py文件1.py文件2.py
来自SRC:
src$ python file1.py
打印:
yeeeeah func1
yeeeah func2
从别的地方:
src$ cd ..
test_stack$ python src/file1.py
打印:
yeeeeah func1
yeeeah func2
假设src是您的主目录(其中有setup.py requirements.txt等)
在file1中,从file2导入函数之前,可以指定file2的目录:
import sys
sys.path.append("/path_to_the_directory_that_can_find_file2")
from file2 import func1, func2
这将使它在src目录之外运行时更加健壮。