使python import语句对启动脚本的工作目录“不敏感”

时间:2014-02-13 14:46:43

标签: python import intellij-idea

我是python的新手,我的导入遇到了异常情况。基本上,我只是想把东西整理成包。例如,请参阅此基本目录结构:

   root
    |
 -------
 |     |
 a     b

如果我推出'在root中使用脚本并在' a中使用脚本。从''导入脚本,然后看起来我的脚本中的导入是' a'需要相对于“发射”的位置而言。脚本(在root中)。这没关系,但是我使用IntelliJ作为我的IDE,当我在查看' a'目录,IntelliJ认为进口是坏的,因为他们不是相对的'到了' a'目录。

这有意义吗?难道我做错了什么?

由于

_ 编辑关注 _ _

我有这样的进口(我的' b'有孩子):

 from b.bchild import SomeClass
 from b import anotherBChild as blah

我尝试添加' b'作为IntelliJ中的源根,但是' b'是主要源根的子节点,因此IntelliJ抱怨源目录不应该相交。

如果我将导入更改为root.b等等,那么当运行root脚本时,我会遇到运行时失败。

我的每个目录中都有一个空的 init .py。

我应该重新考虑一切运行得很好......我似乎无法让IntelliJ理解导致我认为我做错了什么的导入语句。

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,我相信这个解决方案应该有效:

您需要将“root”目录的父级添加到pythonpath。

然后你放一个空的

  

__init__.py

在“root”中输入“root”的所有子项及其所有子项,依此类推。

完成此操作后,您可以非常轻松地导入脚本。

示例:

假设目录“a”包含脚本 foo.py ,目录“b”包含脚本栏。吡啶

现在您要在 foo 中导入 bar ,只需将此行添加到 foo

将root.b.bar导入为条

编辑:我没有使用intellij和python的经验。但如果它像PyCharm(都是由jetbrains制作)那么你还需要将你的“root”文件夹的父级添加到intellij,就像添加项目一样

(就像他在评论中说的那样)。