1
  1. 我需要打包一堆html/css/etc。文件作为一个包:让我们称它们为“主题”。我这样做是为了让这些跨应用程序可用于多个/任意数量的应用程序。

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

  3. 所有“主题”都位于 package_name 中名为“主题”的文件夹下

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

我猜,“是的”,答案很简单,但目前我还不清楚如何解决这个问题,或者是否有更好的方法我不知道。任何输入表示赞赏。

一些背景:

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

https://github.com/thrisp/fleem

编辑:

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

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

改进和/或更好的解决方案表示赞赏。

4

1 回答 1

1

如果您可以 import 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')
于 2013-05-06T17:37:38.017 回答