使用 setup.py entry_points 寻路

Pathing with setup.py entry_points

不太确定如何解决我的这个问题,但是..我是包装和 setup.py 的初学者。我在目录中有一个脚本。

目录:

-root-
--setup.py (setup file in root dir)

-srcdir (dir with src code)
  --script.py (script in srcdir - WITH function main())

-confdir (dir with conf file)
  --config.conf (config itself)

我使用 python setup.py bdist_wheel 安装它,然后从 setup.py 文件所在的根目录安装它 pip install -e .。我的 setup.py 文件包含一个入口点 entry_points={"console_scripts": {"fish=script:main"}}(这意味着我可以从任何地方使用 cmd 调用 fish 并且它运行 script.py 文件中的 main() 函数)。

现在我有一个问题。来自 script.py 文件 - 我正在阅读 config.conf。如果我从任何目录调用 fish,我将无法访问配置文件 bcs 我在 script.py 中使用相对路径。有没有不使用绝对路径访问它的方法?

基本上我需要来自脚本的相对路径我是 运行 而不是我使用 cmd 所在的目录。有办法吗?

谢谢!

如果配置文件是另一个 Python 模块,您可以简单地导入它:

from ..confdir import config

然而,由于它似乎是其他类型的文件,您可以使用 __file__ 变量创建相对于 script.py:

的路径
from pathlib import Path

conf_path = Path(__file__).parents[1] / 'confdir' / 'config.conf'

并且不要忘记在 setup.py 中的 MANIFEST.in (+ use include_package_data=True 中包含 config.conf