首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web2Py工作目录

Web2Py工作目录
EN

Stack Overflow用户
提问于 2009-12-30 11:01:34
回答 3查看 1.7K关注 0票数 3

嗯,我想用WEb2Py,因为它很不错..我只需要将工作目录更改为我所有模块/库/应用程序所在的目录,这样我就可以使用它们了。当我使用web2py界面/应用程序时,我希望能够导入我的实际程序。我需要这样做,而不是把我所有的应用程序和东西放在Web2Py文件夹中……我正在尝试为我的程序提供一个web前端,而不是将程序放在Web2Py文件夹中。如果这很难理解,我很抱歉。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-30 11:09:37

os.chdir允许您更改操作系统的工作目录,但出于您的目的(允许导入一堆模块&c,它们被限制在某个奇怪的位置),似乎更好的做法是将所需的目录添加到sys.path中。

票数 0
EN

Stack Overflow用户

发布于 2010-01-01 08:23:12

在任何多线程Python程序中(不仅仅是Python),您不应该使用os.chdir,并且当您有多个线程在运行时,也不应该更改sys.path。这是不安全的,因为它会影响其他线程。此外,您不应该在循环中使用sys.path.append(),因为它可能会爆炸。

所有web框架都是多线程的,请求都是在循环中执行的。一些web框架不允许您在不重新启动web服务器的情况下安装/卸载应用程序,因此,如果os.chdir/sys.path.append仅在启动时执行,则没有问题。

在web2py中,我们希望能够在不重新启动web服务器的情况下安装/卸载应用程序。我们希望应用程序具有很强的动态性(例如,根据http请求提供的信息定义模型)。我们希望每个应用程序都有自己的models文件夹,我们希望应用程序之间完全分离,这样如果两个应用程序需要使用同一模块的不同版本,它们就不会相互冲突,所以我们提供了API来实现(request.folder,local_import)。

你仍然可以使用普通的os.chdir和sys.path.append,但是你应该在线程之外进行(而且这不是web2py特有的问题)。您可以像在任何其他Python程序中一样,在任意位置使用import。

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

票数 5
EN

Stack Overflow用户

发布于 2010-01-26 10:40:40

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

代码语言:javascript
复制
# 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

杰伦

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1978188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档