无法从父文件夹导入模块
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
要设置它,请执行以下操作:
- cd到你要添加的目录
- 执行以下操作之一(取决于您的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
我已经为此苦苦挣扎了好几个星期,阅读了那么多(过时的)文章,尝试了那么多不同的建议解决方案,但都没有成功。而且我仍然相信我不是在尝试做一些困难的事情...
我有以下文件夹结构
├── 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
要设置它,请执行以下操作:
- cd到你要添加的目录
- 执行以下操作之一(取决于您的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