python - 模块/导入包的路径

标签 python module package

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

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

  3. 所有“主题”都位于 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/

相关文章:

python - 限制 Tkinter Entry 小部件中的值 : Why can't I delete the first character?

python - 在 Flask 中读取 CSV 文件并迭代 Jinja2

javascript - AngularJS - 我们可以移除/删除模块吗?

java - 我应该导入哪些包才能使用 Crypto 和 encodeBase64URLSafeString?

emacs - Emacs 是否有某种 "package-search"函数可用?

r - 无法在 R 中下载 'digest' 包

python - 将元组列表排序为多个列表的最佳方法和数据结构?

python - 检测 python 字符串的开头

Angular 2模块通信

javascript - JavaScript 模块模式上的 this