散景服务器应用程序-ImportError

时间:2018-10-16 18:44:40

标签: python python-3.x python-import bokeh

我正在尝试从main.py中的module1.py和module2.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服务器

bokeh serve bokeh_apps/

环境 (开发环境和暂存环境都相同)

Python 3.5
Pyramid 1.5.7
bokeh 0.12.6
tornado 4.5.1

注意: 我在开发实例上测试了所有内容,一切正常,没有问题。当我在登台实例上对此进行测试时,出现了这些错误。

如果我做错了什么,请纠正我!在这个问题上的任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分: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()