这可能是一个奇怪的要求,但这是我遇到的.我用Google搜索但没有产生任何结果.
我正在编写一个使用XML文件中记录的大量常量属性/值的应用程序(它们不会更改为静态文件),在我为它生成一个egg文件之前,工作正常.
当逻辑到达XML访问部分时,我收到了一个这样的抱怨:/home/Workspace/my_proj/dist/mps-1.2.0_M2-py2.6.egg/mps/par/client/syntax/syntax.xml
实际上我已经在上面的路径中捆绑了XML文件,但似乎Python不知道如何访问它.
访问XML的代码是......
file_handler = open(path_to_the_file)
lines = file_handler.read().splitlines()
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我有一个Python项目,具有以下结构:
package1
class.py
class2.py
...
package2
otherClass.py
otherClass2.py
...
config
dev_settings.ini
prod_settings.ini
Run Code Online (Sandbox Code Playgroud)
我写了一个setup.py文件,将其转换为具有相同文件结构的egg.(当我使用zip程序检查它时,结构看起来完全相同.)有趣的是,当我从IDE运行Python代码时,它工作正常,可以访问配置文件; 但是当我尝试使用egg从不同的Python脚本运行它时,它似乎无法在egg中找到配置文件.如果我将配置文件放入相对于调用的目录中Python脚本(鸡蛋的外部),它的工作原理 - 但这种方式使得拥有一个自包含的鸡蛋的目的失败了,鸡蛋具有程序的所有功能,可以从任何地方调用.我可以使用任何类/模块并运行egg中的任何函数,只要它们不使用配置文件...但如果它们这样做,则鸡蛋找不到它们,因此函数不起作用.
任何帮助将非常感激!我们对这里的鸡蛋有点新意,并不知道从哪里开始.
我使用setuptools生成了一个python egg,并希望在运行时访问它的元数据.我目前正在努力:
import pkg_resources
dist = pkg_resources.get_distribution("my_project")
print(dist.version)
Run Code Online (Sandbox Code Playgroud)
但如果我安装了同一个鸡蛋的多个版本,这可能会错误地工作.如果我同时安装了egg和开发版本,那么从开发版本运行此代码将获取已安装的egg的版本.
那么,我如何获得我的鸡蛋的元数据而不是我的系统上安装的一些随机匹配的鸡蛋?