访问python父文件夹

访问python父文件夹,python,import,directory,parent,Python,Import,Directory,Parent,我已经浏览了以前的答案,这些答案似乎建议我应该能够使用: from .. import code 尽管它产生了这样的结果: ValueError:尝试在顶级包之外进行相对导入 虽然这似乎不起作用。我的文件结构如下: scraper/ __init__.py bot/ scraper.py __init__.py wigan/ council.py

我已经浏览了以前的答案,这些答案似乎建议我应该能够使用:

from .. import code
尽管它产生了这样的结果: ValueError:尝试在顶级包之外进行相对导入

虽然这似乎不起作用。我的文件结构如下:

scraper/
    __init__.py
    bot/
            scraper.py
            __init__.py
            wigan/ 
                    council.py
                    __init__.py
我可以通过以下方式从委员会获得:

from wigan import council
虽然来自委员会,但在尝试加载scraper.py时,以下各项均不起作用:

from .. import scraper
from scraper.bot import scraper
from scraper.bot.scraper import scraper

任何帮助都会很好。谢谢:-)

我怀疑您遇到的问题是您正在运行位于包中的脚本。这是Python中受支持最笨拙的特性之一。直接运行脚本时,它会将当前路径放在Python搜索路径的开头。如果你在一个包裹里,这是错误的

要正确运行
scraster.py
(如果这是您的脚本),您应该切换到顶层文件夹(无论在
scraster/
上方是什么),然后运行
python-m scraster.bot.scraser

或者,如果通过使用
PYTHONPATH
环境变量,或通过将其(或适当的
.pth
文件)安装到
站点包
文件夹中,将顶层文件夹添加到Python搜索路径,则当前目录限制将被放宽,您可以从任何地方运行脚本


如果您还打算按名称从其他模块导入模块,那么将模块作为脚本运行也会有其他问题。脚本将作为
\uuuu main\uuuu
导入,而不是作为其实际名称导入。如果您也按名称导入它,您将获得脚本的第二个副本,这可能意味着它无法按预期工作(如果模块中存在任何全局状态,则副本之间可能不一致)。这就是经常建议脚本尽可能少做工作的原因之一(只需从另一个模块导入一些东西,然后运行它)。您可能也需要重构代码来实现这一点。

您会遇到什么样的错误?异常、警告或什么都没有?尝试执行scraper.bot时导入错误,使用时导入值错误..您应该将scraper文件夹放入“站点包”或导入系统中的另一个文件夹中;打印(sys.path)并重试导入语句