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

从父目录的相对导入

酆俊远
2023-03-14
问题内容

如何从父目录进行相对导入?

来自meme/cmd/meme

import "../../../meme"

这给出了一个模棱两可的错误:

matt@stanley:~/gopath/src/bitbucket.org/anacrolix/meme/cmd/meme$ go get bitbucket.org/anacrolix/meme/cmd/meme

can't load package: /home/matt/gopath/src/bitbucket.org/anacrolix/meme/cmd/meme/main.go:8:2: local import "../../../meme" in non-local package

matt@stanley:~/gopath/src/bitbucket.org/anacrolix/meme/cmd/meme$ echo $GOPATH

/home/matt/gopath

如何从父目录本地导入?


问题答案:

感谢您添加到您的问题。首先是一个答案,然后是一些解释。我建立了您的代码

  1. 去获得,就像你拥有它一样。(我忽略了错误消息。)
  2. main.go如您所愿,将导入行设置回“ ../../../meme”。
  3. (注释掉一些包含未使用变量的代码。)
  4. 然后在梅梅/ CMD /米姆目录,要么go run main.go或者go build main.go工作。

刚才我说去安装的时候,我的评论是错误的。我应该说去建造。

然而,关键是go build单靠它是行不通的。您必须输入go build main.go。这是因为go命令不允许“非本地包中的本地导入”。没错,规范在这里无济于事。它说:“ ImportPath的解释取决于实现。”
当前的实现行为是由CL 5787055设置的,其后在Go-
nuts上进行了详细讨论。

“本地”是指用文件系统相对路径指示。显然,以..开头的相对路径是本地的,所以窍门就是让go命令也将main视为本地包。键入时它显然不会这么做go build,但键入时却可以go build main.go



 类似资料:
  • 问题内容: 我有以下内容: 我正在尝试从父目录导入。在这种情况下,我尝试从测试文件夹中运行“ UnitTest1.py”,并从其上方的目录(文件“ ModuleFile.py”)导入。 我知道已经有很多答案。 SO问题1,SO问题2,其他所有SO问题。我只是找不到“使用../”作为相对导入而不是显式路径。 我知道从Python 2.5开始,根据提到使用的文档,它们支持“相对导入”,但是我专门尝试这

  • 问题内容: 如何导入驻留在父目录中的模块(python文件)? 这两个目录中都有文件,但是我仍然无法从父目录导入文件? 在此文件夹布局中,脚本B尝试导入脚本A: 脚本B中的以下代码不起作用: 问题答案: 您无需在Python中导入脚本,而可以导入模块。一些python模块也是可以直接运行的脚本(它们在模块级别上做了一些有用的工作)。 通常,最好使用绝对进口,而不是相对进口。 在: 如果您想作为脚本

  • 我有一个名为的脚本,代码如下(我已经大大简化了事情): 但我不仅仅有一个名为的脚本。我有许多名为的脚本,按以下目录结构组织: 每个都有一个稍微不同的实现。我想对做的是通过导入每个脚本并对其运行一些测试来测试所有脚本。下面是一些代码(*'s表示伪代码) 我该怎么做?特别是,如何迭代导入脚本,例如,?

  • 我的中有一个模块,如下所示: module.py 我稍后使用调用此脚本。这个脚本大部分时间都可以工作,但我发现我被CD到了一个目录中,其中有一个文件夹,里面有,Python更喜欢这个文件夹,而不是我的中的其他模块。我认为这是因为Python将文件夹视为一个隐式的、相对的导入(我使用的是Python2.7)。 如何使Python不将$pwd中的文件夹视为隐式相对导入? 和我使用的每个其他模块都包含了

  • 问题内容: 我目前在通过expressJs提供静态文件方面遇到一些小问题。 我的目录结构如下: 上市 的CSS LIB src 意见 家 index.html server.js 在我的文件中,我在所有资产前面都加了一个斜杠。 我的静态设置如下: 但是由于某种原因,我的静态文件没有得到提供。 我当时以为这是跨域调用之类的…我目前正在使用cloud9 IDE,这可能与它有某种关系吗? 问题答案: 您

  • 我有以下目录结构: b、 py需要在a.py中导入一个类。因此,我可以在导入a之前将以下行添加到b.py。 sys.path.append(os.path.dirname(sys.argv[0])) 这是可行的,我可以从任何目录调用b.py,它也可以导入a。但是,当我在另一个目录中编写脚本以使用execfile()调用此文件时,这将失败。 我尝试了相对导入,但得到了“在非包错误中尝试相对导入” 我