好吧,我想用web2py的,因为它是相当不错.. 我只需要改变工作目录到我所有的模块/库/应用程序是这样我就可以使用它们的目录。我希望能够当我使用web2py的接口/应用程序导入我的真正的程序。我需要做的,而不是把我所有的应用程序和东西web2py的文件夹里面......我想给我的程序的web前端没有把该程序在web2py的文件夹,这个..很抱歉,如果这是很难理解的。

有帮助吗?

解决方案

os.chdir 让你改变OS的工作目录,但对于您的需要(让一堆模块&C的被约束住在一些奇怪的地方进口)似乎更好所需的目录添加到的 sys.path中代替。

其他提示

在任何多线程Python程序(而不是只Python)的则不应使用os.chdir和你不应该当你有一个以上的线程运行变化sys.path中。因为它会影响其他线程它是不是安全。此外你不应该sys.path.append()在一个循环中,因为它可能会爆炸。

所有web框架是多线程的,并请求在一个循环中执行。一些web框架不允许你安装/无需重新启动Web服务器未安装应用程序,因此,如果os.chdir / sys.path.append只在启动时执行的话就没有问题。

在web2py中,我们希望能够安装/卸载应用程序而无需重新启动Web服务器。我们希望应用程序是非常动态(例如基于提供的HTTP请求信息定义模型)。我们希望每个应用程序都有自己的模型文件夹,我们希望的应用,因此,如果两个应用程序需要不同版本的同一模块的,他们不相互冲突,所以我们提供的API这样做(request.folder之间完全隔离,local_import)。

您仍然可以使用正常的os.chdir和sys.path.append,但你应该做的外螺纹(这是不是一个web2py的具体问题)。您可以使用导入任何你喜欢,你会在任何其他Python程序。

我强烈建议移动此讨论到的web2py邮件列表。

我不得不做这事。我有我想从我的控制器使用几个模块。如果要能够使用代码驻留在控制器中的模块目录中,可以使用:

# use this in your controller code
impname = local_import('module_in_modules', reload=True)
# reload true  will ensure that it will re load whenever
# there are changes to the module

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top