python项目结构和导入

python项目结构和导入,python,import,Python,Import,我对python项目有一个问题。以下是我的目录: Hotel/ hotel/__init__.py a.py b.py c.py bin/run.py README 整个想法是,我想编写一个包hotel,然后我将编写一些scriptsrun.py来使用该包。所以我把 from hotel import a 进入文件run.py 但是,当我尝试使用以下命令运行Hotel目录下的run.py文件时: python

我对python项目有一个问题。以下是我的目录:

Hotel/
    hotel/__init__.py
          a.py
          b.py
          c.py
    bin/run.py
    README
整个想法是,我想编写一个包hotel,然后我将编写一些scriptsrun.py来使用该包。所以我把

from hotel import a
进入文件run.py

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

python ./bin/run.py
导入错误为:没有名为hotel的模块。 但是当我在这个目录下使用ipython时

from hotel import a
它工作得很好。我不知道什么时候我错了。有人能帮我吗

如中所述,无论从何处运行run.py,都将是添加到PYTHONPATH的脚本目录

在python2.7中,如果您不将_init___u; py.py文件放在Hotel文件夹以及bin文件夹中,您在任何情况下都会遇到问题,因为如果您将Hotel文件夹放在计算机PYTHONPATH的某个位置,您将无法执行这些文件

你有两个选择:

1手动将包放在PYTHONPATH上:

bin/run.py:

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

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

所以酒店是你们的一个模块。为了能够导入它,必须在python路径中包含以下内容:…/Hotel where。。。是指向酒店目录的完整路径。尝试导入系统;打印sys.path以查看它。

谢谢,对于方法1我认为没问题,对于方法2我从未见过有人这样做,在每个github存储库中,项目文件夹中都没有.py。。
Hotel/
    __init__.py  
    hotel/__init__.py
          a.py
          b.py
          c.py
    run.py
    README