如何手动卸载openerp模块

2024-01-07

我在 openerp v7 上安装了一个模块,我想卸载它。

使用界面失败,我在卸载过程中收到错误。

是否有“手动”方式来卸载模块?删除下面的模块文件夹就足够了吗addons/还是还有其他事情要做,以最干净的方式做到这一点?

这是当我尝试通过界面卸载模块时出现的错误:

Client Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/http.py", line 204, in dispatch
    response["result"] = method(self, **self.params)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/controllers/main.py", line 1132, in call_button
    action = self._call_kw(req, model, method, args, {})
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/controllers/main.py", line 1120, in _call_kw
    return getattr(req.session.model(model), method)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/session.py", line 42, in proxy
    result = self.proxy.execute_kw(self.session._db, self.session._uid,     self.session._password, self.model, method, args, kw)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/session.py", line 30, in proxy_method
    result = self.session.send(self.service_name, method, *args)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/session.py", line 103, in send
    raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)


Server Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/session.py", line 89, in send
    return openerp.netsvc.dispatch_rpc(service_name, method, args)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/netsvc.py", line 292, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/service/web_services.py", line 626, in dispatch
    res = fn(db, uid, *params)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/osv/osv.py", line 188, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/osv/osv.py", line 131, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/osv/osv.py", line 197, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/osv/osv.py", line 185, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/base/module/module.py", line 495, in button_immediate_uninstall
    return self._button_immediate_function(cr, uid, ids, self.button_uninstall,     context=context)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/base/module/module.py", line 475, in _button_immediate_function
    _, pool = pooler.restart_pool(cr.dbname, update_module=True)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/pooler.py", line 39, in restart_pool
    registry = RegistryManager.new(db_name, force_demo, status, update_module)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/registry.py", line 218, in new
    openerp.modules.load_modules(registry.db, force_demo, status, update_module)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 354, in load_modules
    loaded_modules, update_module)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 256, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report,     skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 188, in load_module_graph
    load_data(module_name, idref, mode)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 76, in <lambda>
    load_data = lambda *args: _load_data(cr, *args, kind='data')
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 124, in _load_data
    tools.convert_xml_import(cr, module_name, fp, idref, mode, noupdate, report)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-py2.7.egg/openerp/tools/convert.py", line 945, in convert_xml_import
    relaxng.assert_(doc)
  File "lxml.etree.pyx", line 3027, in lxml.etree._Validator.assert_     (src/lxml/lxml.etree.c:129517)
AssertionError: Did not expect text in element record content, line 33

抱歉这么长的痕迹..

起初我怀疑其中一个 xml 文件出了问题,但是当我尝试手动安装模块时遇到同样的错误,我认为还有其他问题,但我看不出是什么问题。

Cheers


从中删除模块的代码addons/还不够 - 这会破坏 OpenERP。

解决方案 1 - 尝试解决正常卸载过程中出现的错误

推荐使用此方法,因为 OpenERP 可以干净利落地完成这项工作。查看卸载过程中出现的错误,并尝试想象可能出现的问题。在此处发布错误跟踪以获得进一步帮助。

解决方案 2 - 手动卸载

我的程序基于OpenERP v6.0,但在OpenERP v7中应该非常相似。

  1. 备份您的数据库:)。做吧。在此过程中您很可能会损坏某些东西。

  2. 查找在模块安装或更新期间创建了哪些记录。

    • Look at __openerp__.py查看安装和更新模块时考虑了哪些 XML 文件。或者,考虑模块目录中的所有 XML 文件。

    • 搜索此模块在安装或更新期间创建的记录。应该有像这样的 XML 元素<record ...model='...'>在这些文件里面。这model属性告诉您记录驻留在哪个数据表中。如果您使用的是类Unix系统,您可以在模块的根目录中尝试以下命令:

    grep -r -n -A 5 --include="*.xml" \<record *

  3. 删除这些记录。您将使用一些数据库接口工具,例如PgAdmin or pqsl并找到上一步中发现的记录。

    例如,以下 XML 行定义了一条记录ir_cron数据表:

    <record model="ir.cron" id="ir_cron_account_fiscalyear_close">

    知道了这一点,您就可以根据 XML 文件中为该记录定义的数据来查找该记录。

  4. 查找并删除该模块定义的所有菜单项。如上所述,在 XML 文件中搜索<menuitem ...>元素。查找相关记录ir_ui_menu数据表。

  5. 发现哪个models由模块定义。尝试以下命令:

    grep -r -n -C 5 --include="*.py" "_name = " *

    只关注派生自的对象中定义的模型osv.osv (osv.Model在 OpenERP v7 中)。他们定义存储在数据库中的持久模型。对象的后代osv.osv_memory (osv.TransientModel在 v7 中)不存储在数据库中。

    请小心并避免删除父对象中定义的模型。看着那(这_inherit对象的属性,让您对此有一个了解。在这种情况下,您只想删除模块添加的列。

    一旦发现模块定义的模型,请尝试删除相应的数据表。例如,模型

    _name = "bg_vat.bg_vat"

    数据库中将有一个名为“bg_vat_bg_vat”的相应表。

  6. 最后,删除或停用该模块。查找与您的模块对应的记录ir_module_module数据表。您可以删除该记录或仅设置state字段到uninstalled.

    如果您愿意,您现在可以从中删除模块的目录addons但我不认为有理由这样做。

我确定我错过了一些清洁操作(例如ir_model*数据表系列)。我也很确定这个过程很容易破坏你的 OpenERP 安装。先做好备份。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何手动卸载openerp模块 的相关文章

  • 没有任何元数据的 zip 文件

    我想找到一种简单的方法来压缩一堆文件 而无需任何文件元数据 例如时间戳 这zip命令似乎总是保留元数据 我没有找到禁用元数据的方法 我希望解决方案是一个命令或最多一个 python 脚本 谢谢 正如一些帖子已经指出的那样 zip 标头中的大
  • 在 Pandas 中按日期获取有效合约

    我在检测 pandas DataFrame 中的活动合约方面遇到了一些困难 假设每一行都是一个协商 对于每一行 我有两列 initial date 和 end date 我想知道的是按日期划分的活跃合约数量 到目前为止我做了一个非常低效的方
  • 从正在运行的 python 脚本检测优化标志是否为 -O 或 -OO

    有时我想生成一个子进程 其优化标志与启动父进程时使用的优 化标志相同 我可以使用类似的东西 optimize not debug 但这样我就可以匹配两者 O and OO flags 是否有一些 python 内部状态包含该信息 经过一番深
  • 行未从树视图复制

    该行未在树视图中复制 我在按行并复制并粘贴到未粘贴的任何地方后制作了弹出复制 The code popup tk Menu tree opportunity tearoff 0 def row copy item tree opportun
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • 如何限制Django CreateView中ForeignKey字段的选择?

    我有一个沿着这些思路的模型结构 models py class Foo models Model class Bar models Model foo models ForeignKey Foo class Baz models Model
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 在径向(树)网络x图中查找末端节点(叶节点)

    给定下图 是否有一种方便的方法来仅获取末端节点 我所说的端节点是指那些具有一个连接边的到节点 我认为这些有时被称为叶节点 G nx DiGraph fromnodes 0 1 1 1 1 1 2 3 4 5 5 5 7 8 9 10 ton
  • 如何在 Python 中将彩色输出打印到终端?

    是否有与 Perl 等效的 Python 语言 print color red print
  • 具有多个元素的数组的真值是二义性错误吗? Python

    from numpy import from pylab import from math import def TentMap a x if x gt 0 and x lt 0 5 return 2 a x elif x gt 0 5 a
  • 如何有效地从 loadmat 函数生成的嵌套 numpy 数组中提取值?

    python中是否有更有效的方法从嵌套的python列表中提取数据 例如A array array 12000000 dtype object 我一直在使用A 0 0 0 0 当你有很多像 A 这样的数据时 这似乎不是一个有效的方法 我也用
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • 如何将列表字典写入字符串而不是 CSV 文件?

    This 堆栈溢出问题 https stackoverflow com questions 37997085 how to write a dictionary of lists to a csv file将列表字典写入 CSV 文件的答案
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如

随机推荐

  • 如何将依赖项注入 iOS 视图控制器?

    我的视图控制器需要向几个模型对象发送消息 如何获取视图控制器内这些模型对象的引用 这些模型对象是 单例 因为系统中一次只能有它们的一份副本 并且它们由多个视图控制器使用 所以我无法在每个视图控制器的 init 方法中实例化它们 我无法使用构
  • 如何在vb.net中检索mysql数据?

    我试图检索具有特定列的 mysql 数据并显示到 vb net 中的文本框 我应该怎么做才能取回它 Dim connect As New MySqlConnection server localhost user id root passw
  • 如何测试父元素对组件绑定的更改?

    我有一个如下所示的组件 想测试一下 onChange方法在绑定的情况下执行myBinding变化 我尝试了一整个早上 但找不到解决这个问题的方法 angular module project myComponent component my
  • 如何成功导入pygame.locals

    你好 Stackoverflowers 我正在学习如何使用 Pygame 进行编程 并且正在尝试导入 pygame locals 根据我正在学习的教程 我是这样开始的 import pygame sys from pygame locals
  • VS 2017 构建工具失败,错误 MSB4019:找不到导入的项目“D:\Microsoft.Cpp.Default.props”

    我正在构建一个新的 TFS 构建服务器 并决定使用 VS 2017 构建工具 而不是安装完整版本的 VS 当我尝试构建 C 项目时 它抛出以下错误 Error MSB4019 The imported project D Microsoft
  • 如何在javascript中清除localstorage、sessionStorage和cookie?然后检索?

    如何彻底清除localstorage sessionStorage and cookies在 JavaScript 中 有什么办法可以在清除这些值后恢复它们吗 如何彻底清除本地存储 localStorage clear 如何彻底清除sess
  • 如何使 navigator.vibrate 在页面加载时在 Onload 上工作

    我想让手机 设备在页面加载时振动 现在只有当我们点击振动按钮时振动才起作用 But the onload标记它不工作 给我一个解决方案来解决这个问题 我什至厌倦了添加window onload example1 也 但仍然不起作用
  • django 将模型实例转换为字典

    我是 Django 的初学者 我需要将 Model 实例转换为类似于 Model objects values 的字典 并带有关系字段 所以我写了一个小函数来做到这一点 def get proper instance field if fi
  • 动态加载 JavaScript 文件

    如何可靠且动态地加载 JavaScript 文件 这可用于实现一个模块或组件 当 初始化 时 该组件将根据需要动态加载所有需要的 JavaScript 库脚本 使用该组件的客户端不需要加载所有库脚本文件 并手动插入
  • Node.js、Express.js - 意外标记 {

    我的应用程序每次到达此行时都会崩溃 const name price req query 似乎无法找到确切的答案 这是错误日志 SyntaxError Unexpected token at exports runInThisContext
  • jsPDF 分页符

    我的页面 tab1 和 tab2 中有 2 个 div 我想将两个 div 导出到 1 个 PDF 文件中 其中 tab1 作为第一页 tab2 从下一页开始 目前 第二个 div 在导出的文件中出现损坏 因此我希望该 div 从下一页出现
  • 如何使用specs2对测试进行分组?

    我习惯了 JUnit 在 JUnit 中 只需在单个文件 类 中定义这些测试并用 Test 然后 为了运行其中几个测试 TestSuite是用创建的 Suite SuiteClasses等等 在specs2中 可以将多个测试分组在两个不同的
  • iOS – UIAppearance外观WhenContainedIn问题

    我正在为导航栏设置图像 如下所示 UINavigationBar appearance setBackgroundImage UIImage imageNamed navbar png forBarMetrics UIBarMetricsD
  • Gmail API users.watch - 没有历史记录的详细信息

    我已成功设置 Google Pub Sub 以使用 Gmail API Watch 功能 如下所述 https developers google com gmail api guides push https developers goo
  • crt1.o:在函数 `_start' 中: - Linux 中对 `main' 的未定义引用

    我正在将应用程序从 Solaris 移植到 Linux 链接的目标文件没有定义 main 但编译和链接在 Solaris 中正确完成 并且生成了可执行文件 在 Linux 中我收到此错误 usr lib gcc x86 64 redhat
  • 同步调用异步 Javascript 函数

    首先 这是一种非常具体的情况 故意以错误的方式将异步调用改造为非常同步的代码库 该代码库有数千行长 而且时间目前没有能力进行更改以 执行对的 它伤害了我的每一根神经 但现实和理想常常不一致 我知道这很糟糕 好吧 顺便说一句 我该如何做到这一
  • 如何使用 IAIK JCE 在 Java 中使用 PKCS#5 格式的 PBE 加密 RSA 私钥?

    我已经创建了 RSA 密钥对 现在 我尝试使用 DES 算法加密私钥 将其格式化为 PKCS 5 并将其打印在控制台上 不幸的是 生成的私钥不起作用 当我尝试使用它时 输入后right密码短语 ssh 客户端返回密码短语无效 加载密钥 te
  • iPhone 在延迟后取消选择行

    我想知道是否有人知道延迟后取消选择表视图的方法 我正在使用deselectRowAtIndexPath方法 我只想在取消选择之前突出显示一秒钟 Thanks 我能够使用 tableView deselectRowAtIndexPath in
  • JavaFX:在 ButtonBar 内对齐按钮(使用 SceneBuilder 或 fxml)

    我有一个 JavaFXButtonBar http docs oracle com javase 8 javafx api javafx scene control ButtonBar html有两个按钮 通过 SceneBuilder 创
  • 如何手动卸载openerp模块

    我在 openerp v7 上安装了一个模块 我想卸载它 使用界面失败 我在卸载过程中收到错误 是否有 手动 方式来卸载模块 删除下面的模块文件夹就足够了吗addons 还是还有其他事情要做 以最干净的方式做到这一点 这是当我尝试通过界面卸