我有一个包,里面有一个默认的json文件,以防用户没有提供。 data = pkgutil.get_data(__name__, "deprecated.json")
单机运行时可以正常工作
但如果我跑 python setup.py install
营造 my.egg
运转 easy_install my.egg
最后启动可执行文件,我得到了一个错误信息 [Errno 2 nosuch file or director: `d:\\work\\pythonvenv\\lib\\site-packages\\my.egg\\PackageName\\depercate.json
return loader.get_data(resource_name)
File "<frozen importlib._bootstrap_external>", line 972, in get_data
我以为使用 pkgutil.get_data 的目的是为了防止这种类型的问题?
修改您的 setup.py
的文件,以包括 package_data
如同 https:/docs.python.org3.8distutilssetupscript.html#installing-package-data。
setup(
...,
package_data={'pkgName': ["path/to/deprecated.json"]},
)
另一种实现同样行为的方法是创建一个 MANIFEST.in
文件,内容为 include path/to/deprecated.json
然后在你 setup
函数包括参数 include_package_data=True
. 详细情况见 https:/python-packaging.readthedocs.ioenlatestnon-code-files.html。.