Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Usign函数来自_init_uuu.py_Python_Python 3.x - Fatal编程技术网

Python Usign函数来自_init_uuu.py

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 │ └

为了成为一名更好的python程序员,我决定更好地组织代码。其中一种方法是使用配置文件而不是变量,并正确地记录内容,而不仅仅是打印错误。在使其工作之后,我了解到大多数人不会将其放在他们的项目文件中,而是放在
\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