访问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)并重试导入语句