Bokeh 服务器应用程序 - ImportError

Bokeh server application - ImportError

我正尝试从 module1.py 和 module2.py 导入 main.py 中的函数,如下所示。

# my imports in main.py

from project_dir.bokeh_apps.scripts.module1 import func1
from project_dir.bokeh_apps.scripts.module2 import func2

下面是我的文件夹结构示例

project/
    project_dir/
        bokeh_apps/
            scripts/
                module1.py
                module2.py
                __init__.py
            main.py
            __init__.py
        dir_1/
        dir_2/
        __init__.py
    dev.ini
    prod.ini

我低于错误

Error running application handler <bokeh.application.handlers.directory.DirectoryHandler object at 0x7fbf647e4208>: No module named 'project_dir.bokeh_apps.scripts'
File "main.py", line 13, in <module>:
from project_dir.bokeh_apps.scripts.module1 import func1 Traceback (most recent call last):
  File "/home/username/.conda/envs/test_env/lib/python3.5/site-packages/bokeh/application/handlers/code_runner.py", line 81, in run
     exec(self._code, module.__dict__)
  File "/var/www/projects/project/project_dir/bokeh_apps/main.py", line 13, in <module>
     from project_dir.bokeh_apps.scripts.module1 import func1
ImportError: No module named 'project_dir.bokeh_apps.scripts'

我是运行散景服务器如下

bokeh serve bokeh_apps/

环境 (我的环境在开发和登台上都是一样的)

Python 3.5
Pyramid 1.5.7
bokeh 0.12.6
tornado 4.5.1

注: 我在我的开发实例上测试了一切,它工作正常,没有问题。当我在我的暂存实例上测试它时,我收到了这些错误。

如有不妥之处请指正!对此问题的任何帮助将不胜感激:)

这对我组织导入很有帮助。您需要根据自己的需要对其进行调整:

Create Custom Python Package

在 python 应用程序中组织导入的最佳方式是创建一个新包并安装它。该包将与主容器文件夹名称一致。文件夹结构:

funniest/
    funniest/
        __init__.py
    setup.py

__init__.py的内容

def joke():
    return (u'Wenn ist das Nunst\u00fcck git und Slotermeyer? Ja! ... '
            u'Beiherhund das Oder die Flipperwaldt gersput.')

在此主文件夹中创建一个包含此内容的 setup.py 文件

from setuptools import setup

setup(name='funniest',
      version='0.1',
      description='The funniest joke in the world',
      url='http://github.com/storborg/funniest',
      author='Flying Circus',
      author_email='flyingcircus@example.com',
      license='MIT',
      packages=['funniest'],
      zip_safe=False)

安装包

pip install .               # install the package completely
pip install -e .            # only symbolic link

现在应该可以了

>>> import funniest         # the __init__.py file of this module is executed
>>> print funniest.joke()