当前位置: 首页 > 面试题库 >

PEP8 –使用sys.path不在文件顶部导入

冯庆
2023-03-14
问题内容

PEP8有一个关于将导入置于文件顶部的规则:

导入总是放在文件的顶部,紧随任何模块注释和文档字符串之后,以及模块全局变量和常量之前。

但是,在某些情况下,我可能想做些类似的事情:

import sys
sys.path.insert("..", 0)

import my_module

在这种情况下,pep8命令行实用程序会标记我的代码

E402模块级别导入不在文件顶部

通过sys.path修改达到PEP8的最佳方法是什么?

为什么

我有这段代码,因为我遵循的是《The Hitchhiker’s
Guide to Python》中
给出的项目结构。

该指南建议我有一个与my_module文件夹分开的tests文件夹,这两个文件夹都位于同一目录中。如果我要访问my_moduletests,我想我需要添加..sys.path


问题答案:

通常foo/tests,我的项目的子目录中有多个带有测试的文件,而我正在测试的模块位于中foo/src。为了从foo/tests没有导入错误的情况下运行测试,我创建了一个foo/tests/pathmagic.py看起来像这样的文件;

"""Path hack to make tests work."""

import os
import sys

bp = os.path.dirname(os.path.realpath('.')).split(os.sep)
modpath = os.sep.join(bp + ['src'])
sys.path.insert(0, modpath)

然后在每个测试文件中,使用

import pathmagic  # noqa

作为第一个导入。“ noqa”注释可防止pycodestyle/pep8抱怨未使用的导入。



 类似资料:
  • 顶部 tab,当需要在页面顶部展示 tab 导航时使用,实现这个效果主要有两个地方要注意一下: 顶部点击后有颜色的改变以及有过度效果 顶部点击后下面对应部分也要发生改变 示例代码如下: <template> <div class="page"> <div class="page__bd"> <div class="weui-tab"> <div class=

  • 问题内容: 这些是我的示例文件: t1.js: t2.js: 当我在Firefox 46中加载页面时,它返回“ SyntaxError:导入声明可能仅出现在模块的顶层” –但是我不确定import语句可以在此处获得多少顶层。此错误是红色鲱鱼吗,并且尚不支持导入/导出吗? 问题答案: 实际上,您得到的错误是因为您需要明确声明您正在加载模块-只有这样,才允许使用模块: 。推荐阅读。 这些浏览器版本(及

  • 以下是我的示例文件: T1.js: T2.js: 当我在Firefox46中加载该页面时,它返回“SyntaxError:import declarations Mays only Account at top level of a module”--但我不确定import语句在这里还能达到多少顶级。这个错误是不是一个错误,是不是还不支持导入/导出?

  • 顶部导航栏放在页面头部: 实例<nav data-topbar>   <ul>     <li>       <!-- 如果你不需要标题或图标可以删掉它 -->       <h1><a href="#">WebSiteName</a></h1>     </li>       <!-- 小屏幕上折叠按钮: 去掉 .menu-icon 类,可以去除图标。       如果需要只显示图片,可以删除

  • 问题 你无法导入你的Python代码因为它所在的目录不在sys.path里。你想将添加新目录到Python路径,但是不想硬链接到你的代码。 解决方案 有两种常用的方式将新目录添加到sys.path。第一种,你可以使用PYTHONPATH环境变量来添加。例如: bash % env PYTHONPATH=/some/dir:/other/dir python3 Python 3.3.0 (defau

  • 我有这个推特引导代码 但是当我查看页面的开头时,导航栏会阻塞页面顶部附近的一些内容。有没有办法让它在查看页面顶部时将其余内容向下推,这样内容就不会被导航栏阻挡?