Pipreqs:语法错误:无效的不可打印字符 U+FEFF

问题描述 投票:0回答:3

当我尝试运行

pipreqs /path/to/project
时,它会返回

  File "<unknown>", line 1
    # !/usr/bin/env python3
    ^
SyntaxError: invalid non-printable character U+FEFF

我的项目包含许多文件,并且所有文件都包含自己的导入。我在某处读到,为多个文件创建 requests.txt 可能会出现问题,因此我尝试将主文件移至新目录并在那里运行 pipreqs,但再次没有成功。

我的进口看起来像这样:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#######################################################
# Initialise Wikipedia agent
#######################################################
import requests
import json
import aiml
import wikipedia
import numpy as np
from nltk.sem.logic import *
from nltk.inference.resolution import *
from nltk.inference import ResolutionProver
from nltk.inference.nonmonotonic import *
from nltk import *
from nltk.sem import logic
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import pandas as pd
from fuzzywuzzy import fuzz
import tkinter as tk
from tkinter import filedialog
from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from msrest.authentication import CognitiveServicesCredentials
import tensorflow_hub as hub

有人对它可能是什么有任何想法吗?任何帮助将不胜感激:)

编辑:

忘记指定:运行

Python 3.9.10
pipreqs
是使用
pip3

安装的
python pip
3个回答
3
投票

字符 U+FEFF 是字节顺序标记,或 BOM。

您可以使用带或不带 BOM 的 UTF 编码保存文本文件,错误消息似乎表明您的系统可以处理 UTF,但不喜欢 BOM,因此您应该尝试重写不带 BOM 的文件。

或者,有一些方法可以告诉Python在命令行上使用环境变量期望不同的编码,但我不会去那里,除非你绝对必须并且无法自己控制文件的编码。


1
投票

您使用的是 Windows 吗?您的文件包含 Unicode 字节顺序标记。有些服务不喜欢这样。如果删除 BOM,它应该可以工作。


0
投票

我想指出,问题下评论中的@MarkRansom 解决方案也可以节省很多痛苦。所以,如果

--encoding=utf-8
仍然没有帮助,你应该尝试
--encoding=utf-8-sig

© www.soinside.com 2019 - 2023. All rights reserved.