无法从父文件夹导入模块

Cannot import modules from parent folder

我已经为此苦苦挣扎了好几个星期,阅读了那么多(过时的)文章,尝试了那么多不同的建议解决方案,但都没有成功。而且我仍然相信我不是在尝试做一些困难的事情...

我有以下文件夹结构

├── script.py 
├── lib 
│   ├── lonlatboxes.py
│   ├── utils.py

我正在使用文件夹 lib 来存储 script.py 中使用的一些库。

utils.py我有

from sqlalchemy import create_engine # python package
from lonlatboxes import lonlatboxes # my module

lonlatboxes.py我有

lonlatboxes = {
    'Africa': [-26.0, 63.0, -41.0, 37.0],
}

script.py我做

import lib.utils

这会导致错误

      1 from sqlalchemy import create_engine
----> 2 from lonlatboxes import lonlatboxes
      3 

ModuleNotFoundError: No module named 'lonlatboxes'

我猜是因为 sys.path 已解决 w.r.t。父文件夹,而不是 lib。请注意,lib.utils 文件已找到!

我该如何解决?或者...我是否在做一些完全反对 Python 进口的事情? 我认为将路径添加到 sys.path 不应该是正确的解决方案。

请注意,我不想创建包。我只有一组脚本和小型库,希望避免将所有内容都放在同一个文件夹中,而是将它们分开,以便我可以有更多订单:)

尝试将此添加到您的 script.py

import sys
sys.path.append('..')
import lib.utils

然后将您的 utils.py 导入部分修改为:

from sqlalchemy import create_engine
from .lonlatboxes import lonlatboxes

您也可以使用 PYTHONPATH 环境变量。更多关于 PYTHONPATH 的信息:https://www.tutorialspoint.com/What-is-PYTHONPATH-environment-variable-in-Python

要设置它,请执行以下操作:

  1. cd到你要添加的目录
  2. 执行以下操作之一(取决于您的shell)
# Linux: 
export PYTHONPATH=$PWD
echo $PYTHONPATH

Command Prompt: 
set PYTHONPATH=%cd%
echo %PYTHONPATH%

Powershell: 
$env:PYTHONPATH=$(Get-Location)
echo $Env:PYTHONPATH

您需要做的就是更改 utils.py 中的第二个 import 并使其相对于 script.py 的位置:

utils.py

from sqlalchemy import create_engine # python package
from .lonlatboxes import lonlatboxes # my module