【问题标题】:How to run Python egg files directly without installing them?如何在不安装的情况下直接运行 Python Egg 文件?
【发布时间】:2010-11-18 20:44:48
【问题描述】:

是否可以像用Java运行jar文件一样直接运行Python的egg文件?

例如,使用 Java,您可能会执行以下操作:

$ java -jar jar-file

【问题讨论】:

    标签: python egg


    【解决方案1】:

    Python Egg 文件直接执行步骤

    假设你有egg文件和驱动文件来运行下面的命令。

    PYTHONPATH=eggfilename.egg python driverfile.py
    

    上面的命令用于不使用 python 代码安装 egg 文件。

    【讨论】:

      【解决方案2】:

      从 Python 2.6 开始,您可以使用 python some.egg,如果它包含名为 __main__ 的模块,它将被执行。

      对于早期版本的 Python,您可以使用 PYTHONPATH=some.egg python -m some module,并且 egg 中的 somemodule 将作为主模块运行。 (注意:如果您使用的是 Windows,则需要单独创建一个 SET PYTHONPATH=some.egg。)

      【讨论】:

      • 我正在使用 Python 3,我不明白如何添加一个名为 main 的模块,请问您有示例吗?
      • 与将任何其他模块添加到 Python 项目中的方法相同:通过添加具有该名称的 .py 文件,然后将其列在 setup arguments
      【解决方案3】:

      例如,如果您要导入以 .egg 文件形式提供的 suds 模块:

      egg_path='/home/shahid/suds_2.4.egg'
      
      sys.path.append(egg_path)
      
      import suds
      #... rest of code
      

      【讨论】:

      • @Mark 它在哪里说的?问题问“如何在不安装的情况下直接运行 Python Egg 文件?”这个答案是有效的。
      • @Adham - 问题中的 Java 示例来自命令行而不是来自 Java
      • @Mark 您正在根据示例推断问题的含义。问题中没有提到“命令行”。
      • @Adham - 这是唯一有用的解释 - jar 文件从命令行运行
      • @Mark 从命令行运行是您对问题的解释。当问题明确询问“如何直接运行 Python Egg 文件而不安装它们?”时,不需要解释。
      【解决方案4】:

      python egg 是“一种可导入的单文件分发格式”。这通常是一个 python 包。

      只要你知道它的名字并且在你的路径中,你就可以将包导入到 egg 中。

      您可以使用“-m”选项和包名来执行包。

      但是,python 包在执行时通常不会做任何事情,您可能会遇到错误。 -c 选项可用于运行代码。 (有关命令行选项的详细信息,请参阅http://docs.python.org/using/cmdline.html

      > python -m sphinx
      sphinx is a package and cannot be directly executed
      
      
      > python -c "import <package in an egg>; <function>();"
      
      
      
      > python -c "import sphinx; print sphinx.package_dir"
      C:\Python26\lib\site-packages\sphinx-0.6.1-py2.6.egg\sphinx
      

      【讨论】:

        猜你喜欢
        • 2013-11-04
        • 2023-01-25
        • 2011-05-17
        • 2011-05-09
        • 2011-02-18
        • 1970-01-01
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        相关资源
        最近更新 更多