专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Python 依赖库 pipreqs命令使用及注意事项

pipreqs打包生成requirements.txt文件

pipreqs的安装与用法

安装:

pip3 install pipreqs

使用中的问题

注意使用 –help参数,未连网时需使用 –use-local参数,但与联网查询可能会有差错,一般查询出的会少

一、UnicodeDecodeError

如果有编码问题,可能会遇见这个错误:

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position xxx: illegal multibyte sequence

这个错误。

解决方法:指定编码格式

pipreqs somedir/location --encoding=utf8

二、SyntaxError

我在解决了上面这个问题后,开心地继续打包,结果遇见了这个问题:

Traceback (most recent call last):
  File "c:\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python37\Scripts\pipreqs.exe\__main__.py", line 7, in <module>
  File "c:\python37\lib\site-packages\pipreqs\pipreqs.py", line 470, in main
    init(args)
  File "c:\python37\lib\site-packages\pipreqs\pipreqs.py", line 409, in init
    follow_links=follow_links)
  File "c:\python37\lib\site-packages\pipreqs\pipreqs.py", line 138, in get_all_imports
    raise exc
  File "c:\python37\lib\site-packages\pipreqs\pipreqs.py", line 124, in get_all_imports
    tree = ast.parse(contents)
  File "c:\python37\lib\ast.py", line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    # -*- coding: utf-8 -*-
    ^

SyntaxError: invalid character in identifier

解决

1 网上方法https://www.pythonheidong.com/blog/article/322400/

利用ord()函数,读到.py文件的开头不可见字符的Unicode编码是65279,然后就简单写了一个脚本,利用该脚本将文件中的chr(65279)字符删除。为了方便以后使用,写的脚本是基于命令行的,如下:

# -*- coding: utf-8 -*-
""" stripbom.py: Solve the problem about BOM """
import os
import sys
with open(sys.argv[1], 'r', encoding='utf-8') as f:
    lines = f.readlines()
    dirname, filename = os.path.split(sys.argv[1])
    file_name, extension = os.path.splitext(filename)
    new_file = os.path.join(dirname, file_name + '_strip' + extension)
    with open(new_file, 'a', encoding='utf-8') as ff:
        for line in lines:
            line = line.replace(chr(65279), '')
            ff.write(line)

然后利用pyinstaller打包,生成stripbom.exe的可执行文件,接着将这个exe文件放入系统的环境变量path中,这样在命令行中就可以运行啦:

stripbom somedir/test.py 这样在和test.py的同目录下就会生成一个以“_strip”结尾的同名文件。这个处理过的文件是没有65279的。

2 利用–debug 参数找出问题文件处理后再重新执行

pipreqs ./ --encoding=utf-8 --use-local --debug

文章永久链接:https://tech.souyunku.com/42051

未经允许不得转载:搜云库技术团队 » Python 依赖库 pipreqs命令使用及注意事项

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们