根據我客戶的要求,我需要發佈一個封閉的源代碼python程序,只有* .pyc文件,並且必須通過pypy運行。PyPy找不到只包含* .pyc文件的模塊
該方案具有其中各種模塊被導入的子目錄:
start.pyc
backends/
server.pyc
...
start.py進口backends.server的第一行,並在標準的「蟒」模式下運行時它的工作原理。 但是,如果我脫光所有的* .py文件,並嘗試運行
(pypy)[email protected]:~ python start.pyc
Traceback (most recent call last):
File "./start.py", line 4, in <module>
ImportError: No module named backends.server
我得到一個錯誤說沒有模塊名爲「後臺」被發現,即使在「後端」子目錄是存在的,並且服務器.pyc文件在那裏。
我記得有一個切換pypy正是這種行爲,但我似乎無法找到它了。任何幫助?
PS這是我們在嵌入式ARM系統上使用的pypy/python版本。
Python 2.7.10 (c95650101a99, Sep 06 2016, 11:02:19)
[PyPy 5.4.1 with GCC 4.7.2 20120731 (prerelease)]
'.pyc'文件包含CPython字節碼。 PyPy有它自己的內部代碼表示,使得(據我所知)'.pyc'文件與PyPy不兼容。同樣的問題在這個郵件列表上被詢問:https://mail.python.org/pipermail/pypy-dev/2011-May/007395.html –
這似乎很奇怪,因爲從PyPy venv我可以啓動'python -m compileall 。 '並重新生成我的項目的所有* .pyc。我猜是PyPy以Pypy兼容的方式生成的。此外,如果我用pypy執行pyc文件,它會給我上面的錯誤,這與pyc中的內容(即導入)有意義和一致。 – zontar