我目前在从 python 项目中的其他目录导入文件时遇到问题。
我当前的文件结构是
Project
- Backend
- Config
+ __init__.py
+ databaseConfig.py
- DataAccess
+ __init__.py
+ sqlConns.py
- __init__.py
- api.py
- main.py
- setup.py
我想做的是将 /Config/databaseConfig.py 文件导入到 /DataAccess/sqlConns.py 文件中。尝试运行 sqlConns.py 文件时出现以下错误
PS C:\source\repos\aaStats\aaStats> py .\Backend\DataAccess\sqlConns.py
Traceback (most recent call last):
File "C:\source\repos\aaStats\aaStats\Backend\DataAccess\sqlConns.py", line 2, in <module>
import Config.databaseConfig
ModuleNotFoundError: No module named 'Config'
我也尝试过使用相对导入,但遇到了另一个错误。
PS C:\source\repos\aaStats\aaStats> py .\Backend\DataAccess\sqlConns.py
Traceback (most recent call last):
File "C:\source\repos\aaStats\aaStats\Backend\DataAccess\sqlConns.py", line 2, in <module>
from ..Config import databaseConfig as dbcfg
ImportError: attempted relative import with no known parent package
Config/databaseConfig.py 包含我想要引用的数据库配置参数,在我的项目中的各个位置。如果我必须移动这个单个文件才能正确引用它并不是什么大不了的事,但我希望在我的项目稍后的文件中使用这样的结构。
以下是有关我的文件的一些详细信息:
/Config/__init__.py
from . import databaseConfig
/DataAccess/__init__.py
from . import sqlConns
后端/__init__.py
from . import DataAccess
from . import Config
后端/setup.py
from setuptools import setup, find_packages
setup(
name='aaStatsApi',
version='0.1.0',
packages= ['DataAccess','Config'],
install_requires=[
'fastapi==0.63.0',
'uvicorn==0.13.4',
'requests==2.25.1',
'pyodbc==4.0.30',
]
)
答案 0 :(得分:0)
Backend
) 目录中,然后从那里执行所有调用。具有 __name__ == __main__
的函数是您的调用函数。如果您不直接从控制台调用 Calls.py
或 Configs.py
,而是从根目录中的另一个 main 函数调用它们,您应该能够将以下内容放入 Conns.py
:# FILE: DataAcess\sqlConns.py
from Config.dataBaseConfig import * # or whatever you need to import
同样,关键是确保您的起点在您的项目根目录中。
import sys, os
sys.path.append(os.path.abspath("../Config"))
from sqlConns import * # or whatever
sys.path.pop() # clear sys.path