问题标签 [python-import]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
268 浏览

python - python如何调用从未在代码中定义的类?

我不知道在这里粘贴所有代码是否可行,但我正在查看此 git repo中的代码。

如果你看他们做的例子:

...但是没有EC2课程。但是,看起来 inlibcloud\providers.py有一个将 映射EC2EC2NodeDriverin的字典libcloud\drivers\ec2.py。正确的映射由 计算get_driver(provider),但该方法似乎没有在任何地方调用。

显然,我是 python 新手,但不是编程新手。我什至不确定我应该在文档中查找什么来解决这个问题。

0 投票
2 回答
1526 浏览

python - 如果从不同路径导入,则重新导入模块

在我正在工作的一个大型应用程序中,几个人以不同的方式导入相同的模块,例如 import x 或 from y import x 的副作用是 x 被导入两次,如果有人依赖全局属性,可能会引入非常微妙的错误

例如,假设我有一个包含三个文件 mymodule.py、main.py 和init .py的包 mypakcage

mymodule.py 内容

main.py 内容

它打印

因为现在在两个不同的模块中有两个列表,类似地 A 类是不同的对我来说它看起来很严重,因为类本身将被不同地对待,例如下面的代码打印 False

问题:

有没有办法避免这种情况?除了强制该模块应该以一种方式导入外。这不能通过 python 导入机制来处理,我在 django 代码和其他地方也看到了一些与此相关的错误。

0 投票
1 回答
118 浏览

django - Django启动导入导致反向发生

这可能是一个孤立的问题,但我想我会问,以防有人对优雅的方法有想法来解决它。

这是设置:

问题是在 django 完成构建 url 之前尝试反向时,shortcuts.py 会导致抛出异常。但是,views.py 还不需要导入shortcuts.py(仅在实际调用mood_dispatcher 时使用)。明显的初始解决方案是:1)内联导入快捷方式(只是在风格上不是很好)2)让shortcuts.py懒惰地构建MOODS(只是更多的工作)

理想情况下,我希望能够在views.py的顶部说“导入快捷方式,加载网址时除外”

0 投票
7 回答
79689 浏览

python - Python中的循环导入依赖

假设我有以下目录结构:

a包中__init__.pyc包被导入。但c_file.py进口a.b.d

程序失败,尝试导入b时说不存在。(它真的不存在,因为我们正在导入它。)c_file.pya.b.d

如何解决这个问题?

0 投票
6 回答
39338 浏览

python - Python 中的本地导入语句

我认为将 import 语句放置在使用它的片段附近,通过使其依赖关系更加清晰来提高可读性。Python会缓存这个吗?我应该关心吗?这是一个坏主意吗?

更多理由:它适用于使用库中神秘位的方法,但是当我将方法重构到另一个文件中时,我没有意识到我错过了外部依赖项,直到出现运行时错误。

0 投票
4 回答
13369 浏览

python - 如何让 PyDev 编辑器选择性地忽略错误?

我在 Eclipse 下使用 PyDev 编写一些 Jython 代码。我有很多情况需要做这样的事情:

问题是 PyDev 总是会将此标记为错误并说“未解决的导入:ISubInterface”。代码工作得很好,只是我不想在我的代码旁边有这些小的白色/红色 X 标记,并且我的问题选项卡上到处都是这些错误。

有没有办法我可以在行尾添加一个魔术注释或类似的东西来让 PyDev 忽略错误错误,类似于你可以添加像“# pylint: disable-msg=E1101”这样的注释来让 PyLint 忽略错误?

此外,在 Jython 中使用 Java 接口时,我可能只是做错了。在这种情况下,我们将非常感谢您提供一点指导。

0 投票
3 回答
17664 浏览

python - Python(和 Django)最佳导入实践

在导入代码的各种方式中,与其他方式相比,有哪些方式更适合使用?这个链接http://effbot.org/zone/import-confusion.htm简而言之就是

在正常情况下或除非您知道自己在做什么,否则不是导入 MyClass 的首选方式。(相反,更好的方法是:

然后在代码中,访问 MyClass 使用

)

简而言之,似乎上面引用的链接是说从模块中导入所有内容通常会更好,而不仅仅是模块的一部分。

但是,我链接的那篇文章确实很旧。

我还听说,至少在 Django 项目的上下文中,最好只导入您想要使用的类,而不是整个模块。据说这种形式有助于避免循环导入错误或至少使 django 导入系统不那么脆弱。有人指出,Django 自己的代码似乎更喜欢“from x import y”而不是“import x”。

假设我正在处理的项目不使用__init__.py...的任何特殊功能(我们所有的__init__.py文件都是空的),我应该使用哪种导入方法,为什么?

0 投票
5 回答
95980 浏览

python - 列出作为 python 包一部分的所有模块?

有没有一种简单的方法可以找到作为 python 包一部分的所有模块?我发现了这个旧的讨论,这并不是真正的结论,但在我推出基于 os.listdir() 的自己的解决方案之前,我很想有一个明确的答案。

0 投票
9 回答
52148 浏览

python - Python:重新加载使用'from X import Y'导入的组件Y?

在 Python 中,一旦我在解释器会话中使用 导入了模块 X import X,并且模块在外部发生更改,我可以使用 .重新加载模块reload(X)。然后,这些更改在我的口译会话中可用。

我想知道当我使用from X import Y.

该语句reload Y不起作用,因为 Y 本身不是模块,而只是模块内部的一个组件(在这种情况下是一个类)。

是否可以在不离开解释器会话(或导入整个模块)的情况下重新加载模块的各个组件?

编辑:

为了澄清起见,问题是关于从模块 X导入类或函数 Y并在更改时重新加载,而不是从包 X 中导入模块 Y。

0 投票
5 回答
4793 浏览

python - `import module` 是否比 `from module import function` 更好的编码风格?

我们from module import function称之为 FMIF 编码风格。

我们import module称之为 IM 编码风格。

我们from package import module称之为 FPIM 编码风格。

为什么 IM+FPIM 被认为是比 FMIF 更好的编码风格?(有关此问题的灵感,请参阅这篇文章。)

以下是一些让我更喜欢 FMIF 而不是 IM 的标准:

  1. 代码短:它允许我使用更短的函数名称,从而有助于坚持每行 80 列的约定。
  2. 可读性:chisquare(...)看起来比 scipy.stats.stats.chisquare(...). 虽然这是一个主观标准,但我想大多数人都会同意。
  3. 易于重定向:如果我使用 FMIF 并且由于某种原因稍后想要重定向 python 以定义functionfromalt_module而不是module我只需要更改一行:from alt_module import function. 如果我要使用 IM,我需要更改很多行代码。
我意识到 FPIM 在某种程度上消除了前两个问题,但第三个问题呢?

我对 IM+FPIM 可能优于 FMIF 的所有原因感兴趣,但特别是,我有兴趣详细阐述此处提到的以下几点:

IM 的优点:

  1. 易于在测试中模拟/注入。(我对模拟不是很熟悉,虽然我最近知道了这个术语的含义。你能在这里展示一下 IM 比 FMIF 更好的代码吗?)
  2. 通过重新定义一些条目来灵活更改模块的能力。(我一定是误解了一些东西,因为这似乎是 FMIF 优于 IM 的优势。请参阅上面我支持 FMIF 的第三个原因。)
  3. 数据序列化和恢复的可预测和可控行为。(我真的不明白 IM 或 FMIF 的选择如何影响这个问题。请详细说明。)
  4. 我知道 FMIF “污染了我的命名空间”,但除了听起来是负面的短语之外,我不理解这如何以任何具体方式伤害代码。
PS。在写这个问题时,我收到一个警告,这个问题看起来很主观,很可能会被关闭。请不要关闭它。我不是在寻找主观意见,而是在寻找 IM+FPIM 明显优于 FMIF 的具体编码情况。

非常感谢。