Skip to main content
 首页 » 编程设计

Python之运行脚本在鸡蛋里

2025年05月04日7zengkefu

我创建了一个可执行文件 egg 以使其成为单个文件可执行文件。

setup.py:

#!/usr/bin/env python 
from setuptools import setup, find_packages 
 
setup( 
    name='app', 
    version='0.5', 
    description='foo', 
    author='microo8', 
    author_email='xxx@email.com', 
    packages=["foo", "bar"], 
    install_requires=["sqlalchemy>=0.7", "paramiko>=1.7.7.1"], 
    entry_points = { 
        'setuptools.installation': [ 
            'eggsecutable = foo.module:main', 
        ] 
    } 
) 

我现在可以调用它:./app-0.5-py2.7.egg,但是相对路径都在egg里面了。 当我在 main 函数中调用 print __file__ 时,它会打印 /home/user/app-0.5-py2.7.egg/foo/module.py。我想读取一个必须与 egg 位于同一目录中的配置文件。并且相同的脚本也必须可以作为“非蛋”执行,因此配置文件将与脚本一起位于目录中。

我怎样才能知道脚本是从一个鸡蛋和鸡蛋路径执行的?

请您参考如下方法:

所以我不知道如何检查正在运行的脚本是否在鸡蛋中,但是可以通过以下方式获取配置文件路径:os.path.realpath('config.cfg')。

这适合我,当我有一个包含可执行 egg 和配置文件的目录时,这是正确的路径。

此外,当我在目录中只有脚本和配置文件时,它也是正确的。

还有当我使用 pyinstaller 时创建单个文件 exe。