2012-08-08 70 views
1

我是OpenERP和Python的新手,我試圖理解py文件中的各種函數。在所有文件中使用的導入函數通常分爲兩部分:第一部分似乎指的是Python庫(稱爲模塊?),如from datetime import datetimefrom dateutil.relativedelta import relativedelta,但第二部分我不知道它是指什麼。在OpenERP中導入函數的參數

我想知道以下功能是指:

import netsvc 
import pooler 
from osv import fields, osv 
import decimal_precision as dp 
from tools.translate import _ 

什麼是NETSVC,池進程,OSV,decimal_precision,tools_translate?如果他們是openERP模塊,我在哪裏可以找到它們後面的代碼,否則它們是什麼?

如果任何人能夠向我解釋他們所有人以及任何其他類似人員,如果他/她知道任何人,我將不勝感激。

回答

1

聽起來好像你已經安裝了OpenERP的某些版本,其中包含編譯文件而不是原始Python源代碼。

我建議你reconfigure your development environment通過從啓動板檢查源代碼並從源代碼運行服務器。就我個人而言,我喜歡用PyDev在Eclipse下運行它,因爲它有一個很好的調試器。

對於Eclipse中的項目配置,我只是從啓動板檢出每個分支,然後將每個分支作爲項目導入到Eclipse工作區中。啓動細節在6.0和6.1之間有點不同。這裏是我的啓動服務器項目的每個版本的命令行參數:

6.0:

--addons路徑$ {workspace_loc:OpenERP的-插件-6.0} --config $ {workspace_loc :OpenERP的-配置/ SRC/server.config} --xmlrpc端口= 9069 --netrpc端口= 9070 --xmlrpcs端口= 9071

6.1需要web客戶端與服務器推出:

--addons-path $ {workspace_loc:openerp-addons-trunk},$ {workspace_loc:openerp-web-trunk}/addons,$ {workspace_loc:openerp-migration} --config $ {workspace_loc:openerp-config/src/server.config} --xmlrpc-port = 9069 --netrpc-port = 9070 --xmlrpcs-port = 9071

+0

謝謝,這有很大的幫助。我發現用zip文件編譯的文件,但它們都是pyo格式的,所以我會按照你的建議去做,這樣我就可以訪問原始代碼。 – 2012-08-13 06:06:42

2

這些是Python模塊。它們不是標準庫的一部分,而是您安裝的一些第三方庫。它們可能是OpenERP的一部分,或者是OpenERP使用的其他庫的一部分。如果打開交互式解釋器,則可以導入模塊,然後查看它們的__file__屬性以查看文件的位置。例如,對於一個隨機模塊調用guineapyg,我已經安裝:

>>> import guineapyg 
>>> guineapyg.__file__ 
'C:\\Documents and Settings\\BrenBarn\\My Documents\\Python\\guineapyg\\guineapyg.py' 

你應該閱讀the Python tutorial以熟悉導入模塊和其它基本的Python的東西。

+0

我正在讀取文件夾中的文件,它們不作爲模塊安裝Python,例如,當我輸入import osv時,我得到一個導入錯誤:沒有名爲osv的模塊。所以謝謝你的幫助,但是我認爲這是行不通的。 – 2012-08-08 11:08:05

2

你可以找到在$服務器代碼/ OpenERP的/

都是到$服務器的相對路徑/ OpenERP的/

其中 「$服務器」 是您的OpenERP服務器的路徑

+0

謝謝你的回答,但我使用的是openERP 6.0.4,並且我無法在服務器位置找到任何這些文件,我手動檢查並使用Windows搜索並沒有結果。我正在使用Windows 7旗艦版64位,任何想法,我應該看看? (實際上,在服務器文件夾我只有插件,文檔和服務作爲文件夾) – 2012-08-08 11:05:56

+0

在openerp 6.0中,你可以找到它在服務器/ bin/ – 2012-08-08 11:14:37

+0

再次感謝你,但它真的很奇怪,我沒有一個bin文件夾在服務器文件夾內,實際上我搜索了所有計算機的osv.py例如,它沒有找到任何文件,但openERP完美地工作,沒有任何錯誤。 – 2012-08-08 11:37:22

2

pooler是一個python模塊,用於跟蹤您安裝的所有模塊的所有對象,以及它對每個數據庫的維護情況。

netsvc模塊負責socket服務(默認8070端口連接的OpenERP)

decimal_precision是模塊,它需要在必要像含稅價格浮點數的護理髮票取決於您選擇的小數點後2或3個小數等...這也取決於你已經提供的配置,該模塊負責保持相同的配置爲所有這些對象(提供相同的小數精度)

_gettext.gettext別名,保持翻譯的所有信息您爲選定的數據庫安裝的語言酶。

地點:

netsvc $Server_path/openerp/netsvc.py 

pooler $Server_path/openerp/pooler.py 

$的server_path - 在這裏你已經安裝在你的服務器的OpenERP。

decision_precision你可以在openerp裏面找到它的一個標準的openerp模塊。

+0

謝謝你的回答和你的解釋,但我使用openERP 6.0.4,我無法在服務器位置找到任何這些文件,我手動檢查並使用Windows搜索,但沒有結果。我正在使用Windows 7 64位,任何想法,我應該看看?(實際上,在服務器文件夾中,我只有插件,文檔和服務作爲文件夾) – 2012-08-08 11:06:52

+2

如果您在Windows上運行,有可能像這些模塊可能捆綁在一個壓縮文件中 – shahjapan 2012-08-08 17:08:36

3

所有這些都是OpenERP的Python模塊

./server/6.1/openerp/netsvc.py 
./server/6.1/openerp/pooler.py 
./server/6.1/openerp/osv/osv.py 
./server/6.1/openerp/tools 

除了decimal_precision這是一個openerp module,你可以找到它進入插件:

./addons/6.1/decimal_precision 

所有這些進口都是relative import這是一種錯誤的編碼態度(see the relative pep)。幸運的是,openerp團隊正在朝着更好的方式前進,如from openerp.addons import this

+0

謝謝您的回答,但我正在使用openERP 6.0.4,並且我無法在服務器位置找到任何這些文件,我手動檢查並使用Windows搜索進行檢查,結果沒有。我正在使用Windows 7旗艦版64位,任何想法,我應該看看? (實際上,在服務器文件夾中,我只有插件,文檔和服務作爲文件夾) – 2012-08-08 11:06:37