bypy icon indicating copy to clipboard operation
bypy copied to clipboard

missing `bypy/res/auth.json` when using `setup.py install`

Open loynoir opened this issue 2 years ago • 8 comments

$ bypy list
FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/python3.10/site-packages/bypy/res/auth.json

package source code https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=bypy-git

$ docker run -v $PWD/bypy:/app -w /app -it python bash
$ PYTHONIOENCODING="utf-8" python setup.py install --root=pkgdir --optimize=1
$ ls pkgdir/usr/local/lib/python3.10/site-packages/bypy/res/auth.json
No such file or directory

loynoir avatar Jan 17 '22 23:01 loynoir

刚安装,同错误

$ bypy info
Traceback (most recent call last):
  File "/usr/bin/bypy", line 33, in <module>
    sys.exit(load_entry_point('bypy==1.7.12', 'console_scripts', 'bypy')())
  File "/usr/lib/python3.10/site-packages/bypy/bypy.py", line 3815, in main
    by = ByPy(**bypyopt)
  File "/usr/lib/python3.10/site-packages/bypy/bypy.py", line 325, in __init__
    self.__load_auth_server_list()
  File "/usr/lib/python3.10/site-packages/bypy/bypy.py", line 1001, in __load_auth_server_list
    j = json.loads(pkgutil.get_data(__name__, 'res/auth.json'))
  File "/usr/lib/python3.10/pkgutil.py", line 639, in get_data
    return loader.get_data(resource_name)
  File "<frozen importlib._bootstrap_external>", line 1073, in get_data
FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/python3.10/site-packages/bypy/res/auth.json'

choyy avatar Jan 21 '22 13:01 choyy

谢谢反馈。 最新版本?奇怪为什么最后/usr/lib/python3.10/site-packages/bypy/res/auth.json这个文件不存在。我刚用python3.9 virtualenv试了一下pip install是没有问题的。

houtianze avatar Jan 22 '22 04:01 houtianze

@houtianze 不过我不是pip装的,我好像是从archlinuxcn源安装的,可能是打包问题

choyy avatar Jan 22 '22 06:01 choyy

@choyy 哦,有可能。 @loynoir 我猜应该是PKGBUILD少加了bypy.res这个包的原因?最近升级里加多了一个res目录打包 - https://github.com/houtianze/bypy/blob/d7ffb4863f0b0debb98548c8df0dc471c475b206/setup.py#L53

(bypy.test包应该不需要加进去,忘了去掉。)

houtianze avatar Jan 22 '22 08:01 houtianze

Clone master branch 之后新建 venv 环境并 pip install . 报错

FileNotFoundError: [Errno 2] No such file or directory: '/home/aru/Temporary/bypy/venv/lib/python3.10/site-packages/bypy/res/auth.json'

但是该文件在当前路径下存在

> fd auth
baidudoc/baidu_oauth_rest_api_list.pdf
baidudoc/baidu_oauth_rest_overview.pdf
bypy/res/auth.json

手动复制 auth.json 至上述位置后解决问题。怀疑是 setup.py 或其他打包脚本内未正确处理或执行复制文件这步?

MrAru avatar Jan 23 '22 06:01 MrAru

@MrAru

谢谢提供信息。我自己试了一下,用venv建立虚拟环境source后运行pip install .res/auth.json是存在的。。

ls /tmp/venv39/lib/python3.9/site-packages/bypy/res                                                                                                                           
__init__.py __pycache__ auth.json

houtianze avatar Jan 23 '22 10:01 houtianze

@houtianze 3.9 3.10

loynoir avatar Jan 23 '22 10:01 loynoir

https://github.com/houtianze/bypy/blob/d7ffb4863f0b0debb98548c8df0dc471c475b206/setup.py#L55

这里没有指定 bypy/res/*.json (未测试),所以 setup.py 的时候不认识。

参考:https://stackoverflow.com/questions/50879668/python-setup-py-some-files-are-missing

petronny avatar Jul 18 '22 06:07 petronny

本地试了一下./setup.py install后运行bypy ls没有问题啊。

houtianze avatar Aug 31 '22 20:08 houtianze