簡體   English   中英

嘗試從腳本中的子目錄導入共享模塊時的相對路徑 ImportError

[英]Relative path ImportError when trying to import a shared module from a subdirectory in a script

我正在嘗試從我的代碼所在的位置導入一個 util package 目錄,但我得到一個我不明白的 ImportError。

我在 Python 中有許多不同的導入語法變體,但都不起作用。

Stack Overflow 上有很多類似的問題,但沒有一個能幫助我理解或解決這個問題。

在我的腦海中,我嘗試了以下變體:

import util
import ..util
from .. import util
from ..util import parser
from AdventOfCode2022 import util
from ..AdventOfCode2022 import util
from ...AdventOfCode2022 import util

我猜其中的大多數都行不通,但我還是嘗試了它們以確保。

錯誤信息:

ImportError:嘗試在沒有已知父項的情況下進行相對導入 package

目錄結構:

.
├── day03
│   ├── input.txt
│   ├── part1.py
│   ├── part2.py
│   └── test_input.txt
└── util
    ├── __init__.py
    └── parser.py

我只想從任何“day0*/”目錄導入我的 util package - 不知道為什么 Python 讓它變得如此困難!

兩種選擇:

  1. ./util/的完整路徑添加到PYTHONPATH環境變量。

例如,在 Bash 上,您的~/.bashrc可能具有export PYTHONPATH="${PYTHONPATH}:/Users/foobar/projects/advent-of-code/util/"

  1. 在導入之前添加sys.path.append('/path/to/application/app/folder')

其他解決方案不起作用,因為:

  1. day03和父目錄不是具有自己的__init__.py的模塊。 from..util import parser類的行僅在涉及的所有內容都是模塊時才有效。
  2. 您大概是從./day03/中運行代碼。

將此視為“我有一堆獨立的 Python 項目( day01day02等),它們都想共享我在另一個項目 ( util ) 中使用的通用代碼,該項目位於我計算機上的其他地方。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM