Python Usign函数来自_init_uuu.py
为了成为一名更好的python程序员,我决定更好地组织代码。其中一种方法是使用配置文件而不是变量,并正确地记录内容,而不仅仅是打印错误。在使其工作之后,我了解到大多数人不会将其放在他们的项目文件中,而是放在Python Usign函数来自_init_uuu.py,python,python-3.x,Python,Python 3.x,为了成为一名更好的python程序员,我决定更好地组织代码。其中一种方法是使用配置文件而不是变量,并正确地记录内容,而不仅仅是打印错误。在使其工作之后,我了解到大多数人不会将其放在他们的项目文件中,而是放在\uuu init\uuuu.py中 我试图将日志配置和配置文件句柄都放在\uuuu init\uuuu.py中,并导入根目录,但没有成功 我有下面的树: . ├── app │ ├── app.py │ ├── config.ini │ ├── database.py │ └
\uuu init\uuuu.py
中
我试图将日志配置和配置文件句柄都放在\uuuu init\uuuu.py
中,并导入根目录,但没有成功
我有下面的树:
.
├── app
│ ├── app.py
│ ├── config.ini
│ ├── database.py
│ └── __init__.py
├── README.md
├── requirements.txt
└── setup.py
这是我的\uuuu init\uuuuu.py
,包含我在所有文件中使用的基本内容:
"""Funções basicas usadas pelo progama"""
import os
import logging
import pathlib
import datetime
import configparser
# Arquivo de configuração
CONFIG_FILE = 'config.ini'
CONFIG_PATH = ''.join([str(pathlib.Path(__file__).parent), '/', CONFIG_FILE])
if os.path.exists(CONFIG_PATH):
config = configparser.ConfigParser()
config.read(CONFIG_PATH)
else:
logging.error(f'Conf file not found: {CONFIG_FILE}')
# Create directories if not exist
try:
if not os.path.exists(config['DEFAULT']['TempDir']):
# Temp dir
os.makedirs(config['DEFAULT']['TempDir'])
if not os.path.exists(config['DEFAULT']['Log']):
# Check log exists, if not create it.
log_file = open(config['DEFAULT']['Log'])
log_file.write(f"Created at {str(datetime.datetime.today())}")
log_file.close()
elif not os.access(config['DEFAULT']['Log'], os.W_OK):
# Check if you have permision to write
logging.error(f"No permision to write: {config['DEFAULT']['Log']}")
except Exception as e:
logging.error(f'Fail during creation: {e}')
# Log
log_format = '%(asctime)s [%(filename)s:%(lineno)d] %(message)s'
logging.basicConfig(filename=config['DEFAULT']['Log'],
format=log_format, level=logging.DEBUG)
def get_conf(param):
"""Return a desired config file"""
return config['CONF'][param]
这是我的database.py(只是我尝试实现的一个示例):
当我尝试执行database.py时(它应该只显示变量,仅此而已),我得到一个ImportError
表示“很可能是由于循环导入”
怎么了?我在看一些例子,它似乎是正确的
所以,请帮助我编写更好的代码!:)
更新
正如一些人所建议的,我确实尝试使用了来自的。导入get_conf
,但我只得到另一个错误:
Traceback (most recent call last):
File "/home/richter/Documents/Projects/App/src/app/database.py", line 10, in <module>
from . import get_conf
ImportError: attempted relative import with no known parent package
回溯(最近一次呼叫最后一次):
文件“/home/richter/Documents/Projects/App/src/App/database.py”,第10行,在
从…起导入获取配置
ImportError:尝试在没有已知父包的情况下进行相对导入
您可以使用
从\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuupy.py
文件导入,因为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。导入您的\u导入
我猜,在您的代码中,它会引发循环导入错误,因为您同时在模块中导入日志,然后又在另一个模块中导入所有模块。请尝试从中导入
。导入get_conf
。导入应用程序可能会导入所有内容,包括正在执行操作的文件importing@9Guy,我第一次试过,但出现了一个错误。ImportError:尝试在没有已知父包的情况下进行相对导入,但出现了另一个错误回溯(最近一次调用):文件“/home/richter/Documents/Projects/App/src/App/database.py”,第10行,在from中。导入get_conf ImportError:尝试在没有已知父包的情况下进行相对导入```
Traceback (most recent call last):
File "/home/richter/Documents/Projects/App/src/app/database.py", line 10, in <module>
from . import get_conf
ImportError: attempted relative import with no known parent package