python - 使用 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 所在的目录。有办法吗?
谢谢!
解决方案
如果配置文件是另一个 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=True
in setup.py
) 中。
推荐阅读
- c - makefile 的问题,“make: Nothing to be done for 'all'” [C]
- python - 使用 np.isclose() 比较时间向量时出现内存错误
- .net - 更改属性网格集合显示
- ios - 使用不同的单元格创建 UITable
- c++ - Manjaro 上的安装和编译提升
- java - 如何从 Excel 文件中获取 @tag 到 Selenium java 中的 CucumberOptions
- windows - MSYS2:使命令不显示任何内容并且运行时间过长
- node.js - 如何将 PDF 文件响应从 Node js 的后端发送到 Swift 的客户端?
- flutter - Flutter iOS 模拟器
- python-3.x - 在 EC2 实例上安装 numpy 1.21.0