![](/img/trans.png)
[英]How to run a Python package with PyPy2 that only consist out of pyc files?
[英]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.