来自模块/导入包的路径

时间:2013-05-06 17:01:22

标签: python module package

  1. 我需要打包一堆html / css / etc.文件作为包:让我们称之为'主题'。我正在这样做,所以我可以为几个/任意数量的应用程序提供这些可用的交叉应用程序。

  2. 我的模块是WHEREEVER / virtualenv / lib / pythonVERSION / site-packages / package_name。

  3. 所有'主题'都在package_name中名为'themes'的文件夹下

  4. 我不需要将这些主题作为模块本身导入,我只需要提及它们在文件系统中的位置,我不确定协议是什么。我可以找到那条路径并在需要时传递它吗?我只需要知道,无论安装包,我都可以在该包中找到一个目录并阅读其中的内容。

    我在猜测,“是的”答案很简单但是如何解决这个问题对我来说并不是很清楚,或者我是否有更好的方式不知道。任何意见都赞赏。

    一些背景知识:

    我正在尝试为flask-fleem创建一个模块加载器:

    https://github.com/thrisp/fleem

    编辑:

    现在对我有用的答案是从包init文件中导出一个常量:

    PACKAGE_THEMES = os.path.join(os.path.dirname(os.path.abspath(__ file__)),'themes')

    改进和/或更好的解决方案。

1 个答案:

答案 0 :(得分:1)

如果您可以导入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')