我需要打包一堆html/css/等。文件作为一个包:我们称它们为“主题”。我这样做是为了让这些跨应用程序可用于多个/任意数量的应用程序。
我的模块位于 WHEREEVER/virtualenv/lib/pythonVERSION/site-packages/package_name。
所有“主题”都位于 package_name 中名为“themes”的文件夹下
我不需要将这些主题作为模块本身导入,我只需要引用它们在文件系统中的位置,并且我不确定协议(protocol)是什么。我可以找到那条路径并在需要时将其传递吗?我只需要找出,无论软件包安装在哪里,我都可以找到该软件包中的一个目录并读取其中的内容。
我猜,“是的”,答案很简单,但目前我还不清楚如何解决这个问题,或者是否有更好的方法我不知道。任何意见表示赞赏。
一些背景:
我正在尝试为 Flask-fleem 创建一个模块加载器:
https://github.com/thrisp/fleem
编辑:
目前对我有用的答案是从包初始化文件中导出一个常量:
PACKAGE_THEMES = os.path.join(os.path.dirname(os.path.abspath(__file__)), '主题')
赞赏改进和/或更好的解决方案。
最佳答案
如果您可以导入 package_name
,那么您就可以确定软件包的安装目录 (package_dir
),从而确定主题目录所在的位置。
import os
import package_name
package_dir = os.path.dirname(package_name.__file__)
theme_dir = os.path.join(package_dir, 'themes')
关于python - 模块/导入包的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403537/