在PEP518环境(pyproject.toml)中从另一个包访问非Python文件 我想制作一个Python包(从这里开始,代码为> MyPosib/Cuth>),其中包括非Python文件(在我的例子中,这些是C++头文件),在安装其他包时,可以使用它们,使用它作为依赖关系(从这里看“代码> AtdioPuths”)。
为了使在PEP518环境(pyproject.toml)中从另一个包访问非Python文件 我想制作一个Python包(从这里开始,代码为> MyPosib/Cuth>),其中包括非Python文件(在我的例子中,这些是C++头文件),在安装其他包时,可以使用它们,使用它作为依赖关系(从这里看“代码> AtdioPuths”)。,python,pip,setuptools,Python,Pip,Setuptools,为了使mypackage在源发行版中包含这些文件并使这些文件可安装,我做了以下工作: 包括清单中的文件。在程序包文件中: 到目前为止,将它们放在这两个位置可以使mypackage与使用distutils、setuptools或pip(本地和来自PyPI)时包含的非Python文件一起正确安装。使用setuptools和pip时,我可以在sys.prefix中的文件夹路径下找到非Python文件-例如: 导入系统,操作系统 join(sys.prefix,“文件夹路径”) 当使用distut
mypackage
在源发行版中包含这些文件并使这些文件可安装,我做了以下工作:
- 包括
清单中的文件。在
程序包文件中:
mypackage
与使用distutils
、setuptools
或pip
(本地和来自PyPI)时包含的非Python文件一起正确安装。使用setuptools
和pip
时,我可以在sys.prefix
中的文件夹路径下找到非Python文件-例如:
导入系统,操作系统
join(sys.prefix,“文件夹路径”)
当使用distutils
时,它们与python文件位于同一文件夹下,因此可以通过mypackage找到它们
import re,mypackage
re.sub(r“\uuuu init\uuuu\.py$”,“”,mypackage.\uuuuuu file\uuuuuuuuu)+“文件夹路径”
但问题是:当另一个使用此作为依赖项的包通过PEP518使用pyproject.toml
文件指定此依赖项时,mypackage
从PyPI下载,并安装在PEP518生成的临时环境中,但非Python文件不在sys.prefix
下,它们安装在一些随机命名的临时文件夹下,如下所示:
$TEMP_FOLDER/pip-build-env-otci9gxx/overlay/folder_path
因此,我的脚本尝试在sys.prefix
或mypackage.\uuuuu file\uuuuu
的根目录下查找文件,但没有选择这些文件
如何通过编程和确定方式从other_package
的setup.py
中获取这些文件在PEP518环境中的安装路径?是否确实要使用数据_文件
我建议改用package\u数据
。通过这种方式,文件是Python包本身的一部分(例如安装在站点包中),安装后很容易检索
资源:
使用以下任一选项访问已安装的软件包数据:
1.
2.
3.您真的想使用数据文件吗
我建议改用package\u数据
。通过这种方式,文件是Python包本身的一部分(例如安装在站点包中),安装后很容易检索
资源:
使用以下任一选项访问已安装的软件包数据:
1.
2.
3.
$TEMP_FOLDER/pip-build-env-otci9gxx/overlay/folder_path
import pkgutil
pkgutil.get_data('my_top_level_package.my_sub_package', 'file.bin')
importlib.resources.read_binary('my_top_level_package.my_sub_package', 'file.bin')