【问题标题】:Import error for Python custom modules in PycharmPycharm中Python自定义模块的导入错误
【发布时间】:2018-03-16 23:57:39
【问题描述】:

由于某些原因,我无法以这种格式import module 导入我自己的模块。

IDE:Pycharm,Python 版本:3

文件:

projectname/scr/test1.py
projectname/scr/test2.py

test1.py:

def print_value(x)
    print x

test2.py:

import test1

 value = 5
 test1.print_value(value)

Pycharm 编辑器向我显示以下错误。

import test1 # Error: No module named test1

但是,当我运行代码 (python test2.py) 时,它运行良好。唯一的问题是我没有得到关于 test1 函数或变量的建议,例如当我键入 test. 时,没有弹出任何建议。 pycharm 的行为有点奇怪。

但是,如果我将这些文件在文件夹层次结构中按顺序向上移动,那么一切正常,当我键入 test1.something 时不会给出错误和正确的建议。

文件:

projectname/test1.py
projectname/test2.py

对此有何解释?为什么它在 src 文件夹中不起作用?

更新: 通过将 src 标记为 root sources 解决了这个问题,这是由 StackOverflow question 启发的。我仍然不明白为什么会发生这种情况以及为什么将此目录设置为根源可以解决此问题,但它现在可以工作。

【问题讨论】:

  • init.py 在 scr 中可用吗?
  • @Sosel 是的,它在 src 文件夹中可用。
  • 运行 test3.py 时 sys.path 中有什么内容?另外,它是 init.py,而不是 init.py
  • 对不起,__init__.py
  • @holak 我们只是把它写成 init.py 作为一个简短的符号。在src中是init.py.

标签: pycharm


【解决方案1】:

通过将 src 标记为受此 StackOverflow question 启发的根源来解决此问题。我仍然不明白为什么会发生这种情况以及为什么将此目录设置为根源可以解决此问题,但它现在可以工作。

【讨论】:

    【解决方案2】:
    import sys
    sys.path.insert(0,'projectname/scr')
    from test1 import anything
    

    我想,这对你有帮助。通过将此路径插入到索引 0 处的可用路径,您可以轻松调用您的模块。

    【讨论】:

      【解决方案3】:

      位于同一位置的模块应该可以毫无问题地导入

      【讨论】:

        猜你喜欢
        • 2016-06-24
        • 2021-02-20
        • 1970-01-01
        • 2015-04-26
        • 2018-03-24
        • 1970-01-01
        • 1970-01-01
        • 2016-08-26
        相关资源
        最近更新 更多