【问题标题】:Python - ValueError: Attempted relative import in non-packagePython - ValueError:尝试在非包中进行相对导入
【发布时间】:2017-10-21 04:14:14
【问题描述】:

这是我的目录结构。

PyCharm
    Python
        PRD
            _AppFunc
                DbUtils.py
                __init__.py

            _AppCode
                DataExtract.py
                __init__.py

            __init__.py

        __init__.py

我的 PYTHONPATH 设置为 C:\Users\username\Desktop\PyCharm\Python\PRD

在 DataExtract.py 中,我尝试使用

导入 DbUtils.py
from .._AppFunc import DbUtils

并收到此错误...

Traceback (most recent call last):  
File "C:\Users\username\Desktop\PyCharm\Python\PRD\_AppCode\DataExtract.py", line 36, in <module> from .._AppFunc import DbUtils   
ValueError: Attempted relative import in non-package

如果我将 DBUtils.py 移出 _AppFunc 文件夹并在 PRD 下,它可以正常工作。 但我打算将其保存在单独的文件夹中以限制访问。

我已经阅读了大多数与此相关的 stack overflow threadspython doc on intra-package-references,但无法运行。

我该怎么做!?

【问题讨论】:

    标签: python-2.7


    【解决方案1】:

    这是有效的...

    1. PYTHONPATH 应设置为根。对于有问题的目录结构,它是C:\Users\username\Desktop\PyCharm
    2. 结构中从根目录开始的每个文件夹和子文件夹都应该做成一个包。复制粘贴__init__.py__init__.pyc
    3. 模块通过完整路径引用导入到主文件中。这个问题是Python.PRD._AppFunc import DbUtils

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-08
      • 2014-11-14
      • 2020-07-20
      • 2019-10-16
      • 2014-02-28
      • 2016-09-08
      • 2019-05-25
      • 2014-01-02
      相关资源
      最近更新 更多