使用 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
。
不太确定如何解决我的这个问题,但是..我是包装和 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
。