在Raspbian上使用Python 2.7和bbfreeze,我可以编译一个模块,然后将其导入另一个没有混淆的脚本吗?
这样的事情:
bbfreeze mylibrary.py (that contain function())
然后:
>>> import mylibrary as p
>>> p.function()
如何做到这一点?
答案 0 :(得分:1)
此解决方案适用于Windows。我希望它或小变化可以在Linux上运行,但我无法访问linux盒子来试用它。
使用以下目录结构创建要冻结的应用程序:
-- sample
-- app
- __init__.py
- fns.py
- main.py
- setup.py
每个python文件的代码是:
<强> fns.py 强>
"""Place functions you want to access from the frozen app here"""
def accessible():
print "This function is accessible"
<强> main.py 强>
import app.fns
def inaccessible():
print "This function is inaccessible; AFAIK"
if __name__ == '__main__':
inaccessible()
app.fns.accessible()
<强> bb_setup.py 强>
from bbfreeze import Freezer
f = Freezer(distdir="frozen")
f.addScript("main.py")
f()
冻结应用程序会导致目录冻结。您现在可以从&#39;冻结&#39;中访问 fns.py 中的功能。应用代码如:
<强> useFrozenCode.py 强>
import sys
# Add the path to the frozen applications app module to the python path
sys.path.append("C:\\no_backup\\personal\\sample\\frozen\\library.zip")
import app.fns
if __name__ == '__main__':
print "Calling a routine from a frozen application"
app.fns.accessible()
无论如何我都不知道在main.py中调用无法访问这个函数。