【问题标题】:python project structure and importpython项目结构和导入
【发布时间】:2015-10-21 13:00:20
【问题描述】:

我遇到了 python 项目的问题。这是我的目录:

Hotel/
    hotel/__init__.py
          a.py
          b.py
          c.py
    bin/run.py
    README

整个想法是我想写一个包酒店,然后我会写一些脚本(run.py)来使用那个包。所以我把

from hotel import a

进入文件run.py。

但是,当我尝试使用以下命令运行 Hotel 目录下的 run.py 文件时:

python ./bin/run.py

导入错误提示:没有名为hotel 的模块。 但是当我在这个目录下使用 ipython 并且当我输入

from hotel import a

效果很好。我不知道我什么时候错了。有人可以帮我吗?

【问题讨论】:

    标签: python import


    【解决方案1】:

    正如this answer 中所述,无论您从哪里运行run.py,它都是将添加到PYTHONPATH 的脚本目录。

    在python2.7中,如果您不将__init__.py文件放在Hotel文件夹以及bin文件夹中,无论如何您都会遇到问题,因为如果您放置它们,您将无法执行它们Hotel 文件夹位于您机器的 PYTHONPATH 上的某个位置。

    你有两个选择:

    1) 手动将包放在PYTHONPATH上:

    bin/run.py:

    import sys
    sys.path.insert(0,'..')
    from hotel import a
    

    2) 将run.py移出到父目录:

    Hotel/
        __init__.py  
        hotel/__init__.py
              a.py
              b.py
              c.py
        run.py
        README
    

    【讨论】:

    • 谢谢,方法1我觉得还可以,方法2没见过这样的,每个github仓库的项目文件夹里都没有.py..
    【解决方案2】:

    因此,酒店是您的一个模块。为了能够导入它,您的 python 路径中必须有以下内容:.../Hotel 其中 ... 是您的 Hotel 目录的完整路径。试试import sys; print sys.path看看吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2022-01-17
      • 2018-11-21
      • 1970-01-01
      • 2016-12-10
      • 2015-04-21
      • 1970-01-01
      相关资源
      最近更新 更多