导入在多个目录的 python 中不起作用
import not working in python with multiple directory
Project_folder
main.py
folder_x
__init__.py
A.py
B.py
folder_y
__init__.py
C.py
D.py
我有一个类似上面的项目结构。在 main.py
中,我正在导入 A.py
from folder_x.A import A
在 A.py
文件中我有
from B import B
但它正在给予
from B import B
ModuleNotFoundError: No module named 'B'
我找到了一些相关问题的答案(更新系统路径)。但是还有别的办法吗?
而且我也不允许修改 A.py
或 B.py
将 B.py
从 folder_x 移动到 Project_folder
你需要试试这个
from folder_x.B import B
Python 解释器不会按照您试图假设的方式解释您的代码。
每当您检查 - print(sys.path)
列出的所有路径都可以使用 python 的导入语句,并且必须使用它以正确的层次结构导入以便您执行操作成功。
由于您正在执行项目,因此您的根工作目录为:Project_folder
from folder_x.A import A
将起作用,因为可以从 Project_folder
映射路径
为了能够在内部使用模块,您需要使用相对路径为 Project_folder
的模块内部导入
即from folder_x.B import B
和 from folder_x.A import A
因为您提到不允许更改 A.py
或 B.py
你只有两种可能:
- 将文件本身移动到
Project_folder
下
- 使用
sys.path.insert
或 sys.path.append
将您的文件夹路径 folder_x
添加到系统路径。
试试这个:
import sys
function_path = r'C:\Users\hogsione\jupyter' # Folder path where your .py file is present
sys.path.insert(1, function_path)
from A import my_function
当您执行 main.py python 解释器时,使用该 main.py 文件路径作为执行整个应用程序的基本路径。
该基本路径自始至终都指代应用程序中的导入模块。
因此,无论何时导入,请确认您的导入应遵循该基本路径(如上所述)目录结构。
以下是您可以尝试的解决方案,
只需在您的代码中添加以上几行即可帮助您更好地解决问题。
sys.path.append(os.path.abspath(os.path.join(os.getcwd(), os.pardir)))
或
import sys
from os.path import dirname, abspath
d=dirname(dirname(abspath(__file__)))
sys.path.append(d)
Project_folder
main.py
folder_x
__init__.py
A.py
B.py
folder_y
__init__.py
C.py
D.py
我有一个类似上面的项目结构。在 main.py
中,我正在导入 A.py
from folder_x.A import A
在 A.py
文件中我有
from B import B
但它正在给予
from B import B
ModuleNotFoundError: No module named 'B'
我找到了一些相关问题的答案(更新系统路径)。但是还有别的办法吗?
而且我也不允许修改 A.py
或 B.py
将 B.py
从 folder_x 移动到 Project_folder
你需要试试这个
from folder_x.B import B
Python 解释器不会按照您试图假设的方式解释您的代码。
每当您检查 - print(sys.path)
列出的所有路径都可以使用 python 的导入语句,并且必须使用它以正确的层次结构导入以便您执行操作成功。
由于您正在执行项目,因此您的根工作目录为:Project_folder
from folder_x.A import A
将起作用,因为可以从 Project_folder
为了能够在内部使用模块,您需要使用相对路径为 Project_folder
即from folder_x.B import B
和 from folder_x.A import A
因为您提到不允许更改 A.py
或 B.py
你只有两种可能:
- 将文件本身移动到
Project_folder
下
- 使用
sys.path.insert
或sys.path.append
将您的文件夹路径folder_x
添加到系统路径。
试试这个:
import sys
function_path = r'C:\Users\hogsione\jupyter' # Folder path where your .py file is present
sys.path.insert(1, function_path)
from A import my_function
当您执行 main.py python 解释器时,使用该 main.py 文件路径作为执行整个应用程序的基本路径。
该基本路径自始至终都指代应用程序中的导入模块。 因此,无论何时导入,请确认您的导入应遵循该基本路径(如上所述)目录结构。
以下是您可以尝试的解决方案, 只需在您的代码中添加以上几行即可帮助您更好地解决问题。
sys.path.append(os.path.abspath(os.path.join(os.getcwd(), os.pardir)))
或
import sys
from os.path import dirname, abspath
d=dirname(dirname(abspath(__file__)))
sys.path.append(d)