2014-04-18 108 views
1

我已经能够运行我从IDE写入瓶中的Web应用程序。它运行良好,当我试图将它移动到一个新的系统时,它打破了(找不到我在lib文件夹中写入的文件)。Python无法找到我的软件包:

如何找到我的lib文件?我发现这对瓶:

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

而且我认为,这将与丢失.tpl文件的帮助,但我怎么一般这样做的蟒蛇?我可以在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 

回答

3

也许你已经忘了放了__init__.py文件在您lib文件夹。 Here's why you need the __init__.py file

The init.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case, init.py can just be an empty file, but it can also execute initialization code for the package or set the all variable, described later.

+0

我有我的lib文件夹中的文件。我还在其他几个文件夹中...可能是一个问题吗? – Jeff

+0

如果你想从'main.py'访问'lib'文件夹中的文件,那么你的'src'文件夹也需要'__init __。py'文件。我不知道所有其他'__init.py'文件在哪里,但不应该是问题。 – s16h

+0

也许编辑你的问题来显示'main.py'中的相关代码以及你得到的错误。 – s16h

相关问题