Python无法找到我的包:

时间:2014-04-18 13:42:30

标签: python

我能够运行我在IDE中用瓶子写的网络应用程序。它工作得很好,当我试图将它移动到一个新系统时,它崩溃了(无法找到我在lib文件夹中写的文件)。

如何找到我的lib文件?我发现这个用于瓶子:

bottle.TEMPLATE_PATH.insert(0,'/absolut/path/to/templates/')

我认为这对缺少的.tpl文件有帮助,但是我如何为python做这个呢?我可以在main.py中添加某种python.PATH.insert()吗?

这是我的目录结构:

DEV
├───.idea
│   ├───inspectionProfiles
│   └───scopes
└───myProject *(Also has a .py file I need)*
    ├───output
    │   └───processed
    └───webapp
        ├───src
        │   ├───lib
        │   │   └───*(All my .py files I need)*
        │   ├───static
        │   │   ├───css
        │   │   ├───files
        │   │   ├───img
        │   │   └───js
        │   └───views *(All the .tpl files I need)*
        │       ├───main
        │       ├───popup
        │       └───reports
        └───main.py *(The file that acesses the .py files)*

相关守则:

import threading
import time
import datetime

import crud_ops
from helper_functions import load_config_file, dt_ona_sum_format
from server import run_bottle
from myProject import ona_sum_tool #THIS LINE HERE

 ...


def run_queue(col):

    while(1):
        if not col:
            print "Unable to connect to db."
        else:
            my_limit = 10
            processing_cursor = col.queue.find({"status":"processing"}).limit(my_limit)
            if not processing_cursor.count():
                queued_cursor = col.queue.find({"status":"queued"}).limit(my_limit)
                if queued_cursor.count():
                    for doc in queued_cursor:
                        print col.queue.update({"_id":doc['_id']},{"$set":{"status":"processing"}} )
                # print col.queue.update({"status":"queued"}, {"$set":{"status":"processing"}}).limit(10)
                    processing_cursor = col.queue.find({"status":"processing"})
            if processing_cursor.count():
                time.sleep(1)
                for doc in processing_cursor:
                    ############################# THIS LINE HERE ######################
                    new_file_name = ona_sum_tool.run_summary(dt_ona_sum_format(doc['start']), dt_ona_sum_format(doc['end']))
                    # print "new_file_name: ", new_file_name
                    old_id = doc['_id']
                    # print old_id
                    doc['_id'] = str(new_file_name)
                    doc['status'] = 'done'

                    insert_result = col.queue.insert(doc)
                    if(insert_result):
                        col.queue.remove({"_id":old_id})

错误:

Traceback (most recent call last):
  File "main.py", line 5, in <module>
    from lib.threads import ConnectToDBThread, StartBottleThread, ProcessOutputController, \
  File "C:\dev\myProject\myProject\webapp\src\lib\threads.py", line 10, in <module>
    from myProject import ona_sum_tool
ImportError: No module named onager

1 个答案:

答案 0 :(得分:3)

也许您忘记将__init__.py文件放在lib文件夹中。 Here's why you need the __init__.py file

  

需要 init .py文件才能使Python将目录视为包含包;这样做是为了防止具有通用名称的目录(例如字符串)无意中隐藏稍后在模块搜索路径上发生的有效模块。在最简单的情况下, init .py可以只是一个空文件,但它也可以执行包的初始化代码或设置 all 变量,稍后将对此进行描述。 p>