gpt4 book ai didi

python - 模块名称与目录名称不同?

转载 作者:太空狗 更新时间:2023-10-29 17:17:03 24 4
gpt4 key购买 nike

假设我有一个名为 bestpackage 的 python 包。

惯例规定 bestpacakge 也将是 sys.path 上的一个目录,其中包含一个 __init__.py 以使解释器假设它可以从中导入。

有什么方法可以为包名称设置一个变量,以便可以将目录命名为与我导入它时使用的指令不同的名称?有没有办法让命名空间不关心目录名称,而是尊重其他一些配置?

我 super 时髦的客户端开发人员非常喜欢这些性感的 something.otherthing.js 项目名称,用于我们的一个较小的副项目!

编辑:

澄清一下,我的问题的主要目的是让我的客户端人员继续使用他们现有的约定 (some.app. js),即使在某些情况下它们实际上是 python 包,它们将在路径上并在内部获取 import 语句。我意识到这在实践中是一件非常可怕的事情,所以出于好奇我问了更多。因此,这里的部分大问题是规避目录名称(以及假定的包名称)中的 . 暗示属性访问的事实。这无法解决,这并不让我感到惊讶,我只是好奇是否有可能更深入地了解 import 背后的“魔法”。

这里有一些很好的响应,但都依赖于进行某种类型的经典导入,其中属性访问器 . 将与目录名称发生冲突。

最佳答案

包含__init__.py 文件的目录称为

不,包名称​​总是与目录相同。这就是 Python 发现包的方式,它将它与在搜索路径上找到的目录名称进行匹配,如果该目录中有一个 __init__.py 文件,它就会找到一个匹配项并导入 __init__ .py 文件包含。

您始终可以使用 from module import somethingimport module as alias 语法以更短、更易于使用的名称将某些内容导入本地模块命名空间:

from something.otherthing.js import foo
from something.otherthing import js as bar
import something.otherthing.js as hamspam

关于python - 模块名称与目录名称不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13254047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com