首页 > 解决方案 > 使用 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然后pip install -e .从 setup.py 文件所在的根目录安装它。我的 setup.py 文件包含一个入口点entry_points={"console_scripts": {"fish=script:main"}}(这意味着我可以fish使用 cmd 从任何地方调用它并运行 script.py 文件中的 main() 函数)。

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

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

谢谢!

标签: pythonpathpackagesetup.py

解决方案


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

from ..confdir import config

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

from pathlib import Path

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

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


推荐阅读