【问题标题】:Python full path import not working across branches in package treePython完整路径导入不适用于包树中的分支
【发布时间】:2012-06-15 08:25:19
【问题描述】:

我的项目结构如下:

Project
  - GUI
    - ...Modules
  - Data
    - Database
      - ...Modules
    - Files
      - ...Modules
  - Utilities
    - ...Modules

我正在尝试通过包边框进行一些导入,例如:

在文件(模块)Project.Database.dbdriver 我尝试导入Project.Utilities.Conversions。如果我使用像import Project.Utilities.Conversions 这样的完全指定的导入,它会失败,它适用于import Utilities.Conversions,即我不能指定更多的路径而不是那些不同的部分。但是我想使用完全指定的路径,一个原因是 Eclipse 中的 pydev 更喜欢它们(否则它会显示一个错误),第二个原因是我觉得不这样做会令人困惑。

我偶然发现了这个,但认为这是错误的/这里不需要How do I create a namespace package in Python?

问题:如何在包结构中跨子分支时使用完全指定的包含?

【问题讨论】:

    标签: python jython jython-2.5


    【解决方案1】:

    完全指定的导入失败,因为 python(或 jython)的当前工作目录设置为 Project。你可以:

    将 Project 的父目录添加到你的 python 库中

    import sys
    sys.path.append('/parent/of/project')
    

    或者只是在调试设置中将jython的工作目录改成Project的父目录。(我不知道怎么做,因为我没有使用pydev。)

    【讨论】:

    • 问题不在于 pydev,而在于我运行项目的 shell。 (日食外)。谢谢。
    • 虽然您的建议解决了我正在开发的应用程序中的问题,但它在 pydev 中产生了问题,import Project.GUI as gui 产生ImportError: No module named GUI,是的,有 __init__.py,是的项目父文件夹显示当我print sys.path 时,就在错误发生之前。但我会把它放在别的地方,因为你解决了最初的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2021-05-23
    • 2016-11-20
    相关资源
    最近更新 更多