如何在同一程式中呼叫分別用python 2和python 3寫的多個第三方模組

時間 2021-05-30 02:24:10

1樓:依雲

有三種方案。

一、跑多個程序,使用 IPC 手段來協調(開對匿名套接字做 RPC 之類的)。

二、像 Vim 那樣弄執行時動態鏈結。好麻煩的,還不容易做好相容。

三、把那個只支援 Python 2.x 的模組給改成相容 Python 3.x 的,並且改動要足夠好,然後說服上游讓他們合併。

2樓:Coldwings

從實際情況來看,模組在執行時只會使用你執行程式的直譯器,因此如果兩個模組開發時針對環境不同,那麼沒有任何好辦法可以讓它通過兩種直譯器分別使用不同模組。

目前看來有乙個辦法是,自己包裝一下兩個模組,通過MQ、RPC甚至PIPE進行通訊,分別使用不同的venv去跑,然後寫個啟動指令碼的幹活。

其次就是用py3去跑,並且把py2裡的那個模組改改,想辦法用six/2to3做一下相容。這樣可能是最省事的。

3樓:黃哥

有二種解決方法。

1、利用異常

try: # Python 2.7+

from collections import OrderedDict

except ImportError:

from .packages.ordered_dict import OrderedDict

from .packages.six import iterkeys, itervalues, PY3

2、利用sys.version_info import sys

if (sys.version_info > (3, 0Python 3 code in this block

import base64

return base64.b64encode(data).decode()

else:

# Python 2 code in this block

return data.encode("base64")

如何在js中呼叫php

Shaopeng 大概是下面這樣,js不能呼叫PHP方法,但可以通過http request方式觸發php方法並得到response server.php name POST name password POST password result loginUser name,password ech...

如何在同一U盤中安裝多個系統?

U盤分兩個區,自己建立乙個ESP分割槽,外加乙個NTFS分割槽放多系統的VHDX檔案。使用BOOTICE工具編輯引導。不知道這種方法能不能滿足需求。 補天芯資料恢復 同意金滿堂的回答,可以把U盤量產為硬碟模式。補充乙個,雙系統不論是裝U盤還是硬碟,都需要單獨分割槽,乙個系統放乙個分割槽。如果不知道如...

Directx 11中,如何在同乙個 Rendering Pass 暫時儲存乙個2D Texture?

沒有大牛的幫助自己回答一下自己,暫時沒有想到很好的解決方法。只想到一種節省記憶體的做法,即交叉迴圈使用。以下的各 pass 都是 Full screen quad pass。1。Initialize 2個 Texture2D back buffer,即 texture 1 和 texture 2 2...