Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 带有外部Python库的Odoo自定义模块_Python 2.7_Openerp_Odoo 10 - Fatal编程技术网

Python 2.7 带有外部Python库的Odoo自定义模块

Python 2.7 带有外部Python库的Odoo自定义模块,python-2.7,openerp,odoo-10,Python 2.7,Openerp,Odoo 10,我使用Python库在Python中创建了一个Odoo模块。 我使用pip install ujson在我的开发服务器上手动安装了这个库 现在我想在我的实时服务器上安装该模块。我能告诉Odoo模块在安装ujson库时安装它吗?所以我只需要将模块添加到我的插件路径,并通过Odoo Web界面安装它 实现自动化的另一个原因是,如果我想共享我的自定义模块,那么其他人就不必在他们的服务器上手动安装库 如何以这种方式配置我的模块,有什么建议吗?或者我应该只在我的模块中包含库的目录吗?以下是在report.

我使用Python库在Python中创建了一个Odoo模块。 我使用
pip install ujson
在我的开发服务器上手动安装了这个库

现在我想在我的实时服务器上安装该模块。我能告诉Odoo模块在安装ujson库时安装它吗?所以我只需要将模块添加到我的插件路径,并通过Odoo Web界面安装它

实现自动化的另一个原因是,如果我想共享我的自定义模块,那么其他人就不必在他们的服务器上手动安装库


如何以这种方式配置我的模块,有什么建议吗?或者我应该只在我的模块中包含库的目录吗?

以下是在report.py(odoo\u root\u folder/addons/report/models/report.py)中的基本插件中用于安装wkhtmltopdf的代码

from openerp.tools.misc import find_in_path
import subprocess

def _get_wkhtmltopdf_bin():
    return find_in_path('wkhtmltopdf')

try:
    process = subprocess.Popen([_get_wkhtmltopdf_bin(), '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except (OSError, IOError):
    _logger.info('You need Wkhtmltopdf to print a pdf version of the reports.')

基本上,您需要找到一些python代码来运行库并安装它,并将这些代码包含在您的一个.py文件中,这样就可以了。

除了导入之外,您应该尝试在odoo server start上处理问题:

试试看:
从外部依赖项导入ClassA
除恐怖外:
通过
对于模块的其他用户,扩展模块清单中的
外部依赖项
(v9及以下版本:\uuuuOpenerp\uuuuuuuuuuuuuuupy;v10+:\uuuuuuuuuuuuuuuuu manifest\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

“外部依赖项”:{
“python”:[“外部_依赖项”]
},

非常感谢伊万和他的

谢谢你的帮助,@Walid Mashal和@CZoellner,你们都为我指明了正确的方向

我现在解决了这个任务,在模块的_init__; py.py中添加了以下代码:

import pip
try:
    import ujson
except ImportError:
    print('\n There was no such module named -ujson- installed')
    print('xxxxxxxxxxxxxxxx installing ujson xxxxxxxxxxxxxx')
    pip.main(['install', 'ujson'])

在python文件中,使用以下命令,您可以安装它(它仅适用于odoo)。我要在这里安装xlsxwriter

try:
    import xlsxwriter
except:
    os.system("pip install xlsxwriter")
    import xlsxwriter

谢谢你的提示。在清单中包含外部依赖项会创建更好的错误消息。但是,我最初希望自动安装依赖的python库。是的,我了解您的初始要求,但我没有更好的解决方案,而且我确信在Odoo中没有现成的解决方案。我不太确定如何实现安装部分。我需要试试这个。谢谢你的帮助。如果我成功了,我会告诉你的。