从同一文件夹中的另一个文件导入功能
Import function from another file in same folder
我知道这个问题在其他帖子里被问过很多次了,但是我无法用提供的答案来解决它。
我正在创建一个 Django 应用程序,其中有一个 .py 文件,其中包含一些我想导入到另一个文件中并使用它们的函数。这是要导入的函数的代码(在 helpers.py 中):
from requests.exceptions import HTTPError
def cargar_api(url):
for url in [url]:
try:
response = requests.get(url)
response.raise_for_status()
except HTTPError as http_err:
print(f"Ocurrió un error HTTP: {http_err}")
except Exception as err:
print(f"Ocurrió otro error: {err}")
else:
print("API cargada")
data = response.json()
return data
这是我要导入它的代码,文件 (service.py) 与 helpers.py:
在同一个文件夹中
import requests
from requests.exceptions import HTTPError
import os
from .helpers import cargar_api
WEATHER_API_KEY = os.environ.get("WEATHER_API_KEY")
# funcion que da todos los datos del clima segun las coordenadas
# adicionalmente agrega un key "recomendacion" para alertar al usuario de precauciones a tomar antes de salir
# informacion de cada dato de la API: https://www.weatherbit.io/api/weather-current
# diferentes opciones de descripciones y logos aqui: https://www.weatherbit.io/api/codes
def info_clima(latitud, longitud):
url_clima = f"https://api.weatherbit.io/v2.0/current?lat={latitud}&lon={longitud}&key={WEATHER_API_KEY}"
info_clima = cargar_api(url_clima)["data"][0]
descripcion_clima = info_clima["weather"]["description"]
if (
"Thunderstorm" in descripcion_clima
or "Drizzle" in descripcion_clima
or "Rain" in descripcion_clima
):
info_clima["recomendacion"] = "¡Sal con paraguas! Lloverá"
elif "snow" in descripcion_clima.lower():
info_clima["recomendacion"] = "Cuidado en la vía, nevará"
elif "Clear sky" in descripcion_clima:
info_clima["recomendacion"] = "El día estará despejado hoy, ¡protégete del sol!"
else:
info_clima["recomendacion"] = "¡Ten un excelente día!"
print(info_clima)
return info_clima
当我 运行 service.py 我得到这个错误:
File "service.py", line 4, in
from .helpers import cargar_api ImportError: attempted relative import with no known parent package
我不认为导入行中路径的写入方式有问题,因为我让 VSCode 来帮助我,基本上是自动的。
下面是关于文件夹结构的屏幕:
删除 service.py
中帮助者之前的 .
所以它变成了:-
from helpers import cargar_api
我知道这个问题在其他帖子里被问过很多次了,但是我无法用提供的答案来解决它。
我正在创建一个 Django 应用程序,其中有一个 .py 文件,其中包含一些我想导入到另一个文件中并使用它们的函数。这是要导入的函数的代码(在 helpers.py 中):
from requests.exceptions import HTTPError
def cargar_api(url):
for url in [url]:
try:
response = requests.get(url)
response.raise_for_status()
except HTTPError as http_err:
print(f"Ocurrió un error HTTP: {http_err}")
except Exception as err:
print(f"Ocurrió otro error: {err}")
else:
print("API cargada")
data = response.json()
return data
这是我要导入它的代码,文件 (service.py) 与 helpers.py:
在同一个文件夹中import requests
from requests.exceptions import HTTPError
import os
from .helpers import cargar_api
WEATHER_API_KEY = os.environ.get("WEATHER_API_KEY")
# funcion que da todos los datos del clima segun las coordenadas
# adicionalmente agrega un key "recomendacion" para alertar al usuario de precauciones a tomar antes de salir
# informacion de cada dato de la API: https://www.weatherbit.io/api/weather-current
# diferentes opciones de descripciones y logos aqui: https://www.weatherbit.io/api/codes
def info_clima(latitud, longitud):
url_clima = f"https://api.weatherbit.io/v2.0/current?lat={latitud}&lon={longitud}&key={WEATHER_API_KEY}"
info_clima = cargar_api(url_clima)["data"][0]
descripcion_clima = info_clima["weather"]["description"]
if (
"Thunderstorm" in descripcion_clima
or "Drizzle" in descripcion_clima
or "Rain" in descripcion_clima
):
info_clima["recomendacion"] = "¡Sal con paraguas! Lloverá"
elif "snow" in descripcion_clima.lower():
info_clima["recomendacion"] = "Cuidado en la vía, nevará"
elif "Clear sky" in descripcion_clima:
info_clima["recomendacion"] = "El día estará despejado hoy, ¡protégete del sol!"
else:
info_clima["recomendacion"] = "¡Ten un excelente día!"
print(info_clima)
return info_clima
当我 运行 service.py 我得到这个错误:
File "service.py", line 4, in from .helpers import cargar_api ImportError: attempted relative import with no known parent package
我不认为导入行中路径的写入方式有问题,因为我让 VSCode 来帮助我,基本上是自动的。
下面是关于文件夹结构的屏幕:
删除 service.py
中帮助者之前的.
所以它变成了:-
from helpers import cargar_api