代码之家  ›  专栏  ›  技术社区  ›  tim

PyInstaller:用于访问用户指定源代码的可执行文件

  •  0
  • tim  · 技术社区  · 8 年前

    我使用pyinstaller在我的团队中将代码作为可执行文件分发,因为他们中的大多数人都不是编写代码/脚本的人,也没有安装Python解释器。

    对于我的工具的一些高级使用,我想让用户能够实现一个小的自定义功能来稍微调整功能(对于少数有经验的人)。因此,我想让他们输入一个python文件,该文件定义了一个具有固定名称和字符串作为返回的函数。

    这可能吗? 例如,我的意思是可以拖放py文件,我会告诉他们,他们的用户定义函数需要有一个特定的名称,例如“analyze()”—现在可以从我的PyInstaller脚本中的拖放pythonfile中导入该名称并使用它吗?

    我知道,这肯定不安全,他们可能会做坏事,删除文件等等。。。但这些都是我们目前不关心的事情,请不要讨论。谢谢

    1 回复  |  直到 8 年前
        1
  •  0
  •   tim    8 年前

    回答我自己的问题:是的,在运行时(我已经知道)从给定路径/pythonfile导入模块/函数确实有效,即使在PyInstaller中也是如此(这对我来说是新的)。

    我将其用于Py2.7程序:

    f = r'C:\path\to\userdefined\filewithfunction.py'
    if os.path.exists(f):
        import imp
        userdefined = imp.load_source('', f) # Only Python 2.x, for 3.x see: https://stackoverflow.com/a/67692/701049
        print userdefined   # just a debugging print
        userdefined.imported()  # here you should use try/catch; or check whether the function with the desired name really exists in the object "userdefined". This is only a small demo as example how to import, so didnt do it here.
    
    
    
    filewithfunction.py:
    --------------------
    def imported():
        print 'yes it worked :-)'
    

    正如在示例代码的注释中所写的那样,在Python 3中需要稍微不同的方法。x、 请参阅此链接: https://stackoverflow.com/a/67692/701049