我创建了一个可执行文件 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。
