bbfreeze从编译库导入函数

时间:2014-06-12 10:34:38

标签: python raspbian

在Raspbian上使用Python 2.7和bbfreeze,我可以编译一个模块,然后将其导入另一个没有混淆的脚本吗?

这样的事情:

bbfreeze mylibrary.py (that contain function())

然后:

>>> import mylibrary as p
>>> p.function()

如何做到这一点?

1 个答案:

答案 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中调用无法访问这个函数。