簡體   English   中英

PyPy找不到僅由* .pyc文件組成的模塊

[英]PyPy doesn't find a module made of only *.pyc files

根據我客戶的要求,我需要分發一個僅包含* .pyc文件的封閉源python程序,並且必須通過pypy運行。

該程序有一個子目錄,其中導入了各種模塊:

start.pyc
backends/
   server.pyc
   ...

start.py的第一行將導入backends.server,並且在標准“ python”模式下運行時可以運行。 但是,如果我剝離所有* .py文件,並嘗試運行

(pypy)home@user:~ python start.pyc

Traceback (most recent call last):
  File "./start.py", line 4, in <module>
ImportError: No module named backends.server

我收到一條錯誤消息,即使找到“ backends”子目錄,並且沒有server.pyc文件,也找不到名為“ backends”的模塊。

我記得確實有一個針對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文件的方法(大多數未經測試,但應該可以運行)。 您需要使用以下方法從源中翻譯pypy:

cd pypy/goal
./rpython -Ojit targetpypystandalone.py --objspace-lonepycfiles

如果目標是混淆,那么您還可以編寫自己的導入鈎子,並從自己的自定義文件格式加載模塊(然后以標准PyPy運行)。

最后,我不確定,但是我認為仍然可以從.zip文件中找到並加載.pyc文件。 因此,如果您將應用程序的.pyc文件打包為.zip文件,並使.zip文件可用於常規導入機制(我認為這意味着將.zip文件本身的路徑添加到sys.path中),那么它應該可以在也是標准的PyPy。

通常適用於將.pyc文件反向工程回.py文件的便利性的注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM