导出requirements.txt

文章目录


requirements.txt

在Python项目中,通常使用requirements.txt文件来列出所有需要的第三方库和模块。这个文件通常位于项目的根目录下,并且在安装Python项目时,可以使用pip命令来安装requirements.txt中列出的所有依赖项。

创建好requirements.txt文件后,可以将它提交到版本控制系统中,这样其他开发者克隆项目后,可以通过运行pip install -r requirements.txt来安装所有必需的依赖项。

导出环境中所有包

使用pip:

任意目录打开终端,运行以下命令:

pip freeze > requirements.txt

这将列出当前Python环境中安装的所有包及其版本,并将它们保存到requirements.txt文件中。导出结果会存在路径,生成的requirements.txt文件在当前目录下。

这个方法简单快捷,但可能会包含一些实际上项目并不直接依赖的包。

导出当前项目的包

如果你只想导出项目实际使用到的包,可以使用pipreqs工具。这个工具会分析你的项目代码,识别出实际用到的Python包,并生成requirements.txt文件。

pipreqs 是一个Python包,它可以根据项目中使用的模块自动生成 requirements.txt 文件。这个工具非常适用于当你接手一个新项目或者需要重新创建依赖列表时。以下是一些常用的 pipreqs 参数及其解释:

  • --force-f:强制覆盖现有的 requirements.txt 文件。
  • --savepath-p:指定生成 requirements.txt 文件的路径。
  • --use-local-l:使用本地项目环境中的包版本,而不是从PyPI获取最新版本。
  • --clean:在生成 requirements.txt 之前,清理现有的文件。
  • --append:将依赖项追加到现有的 requirements.txt 文件中,而不是覆盖它。
  • --python-version-V:指定Python版本,用于检查兼容性。
  • --packages-P:指定要包含在 requirements.txt 中的包列表,可以是逗号分隔的字符串。
  • --ignore:指定要忽略的包列表,这些包将不会出现在生成的 requirements.txt 中。
  • --encoding:指定输出文件的编码格式,默认为UTF-8。
  • --check:检查现有的 requirements.txt 文件,报告缺失的依赖项。
  • --case-insensitive:启用大小写不敏感的包名匹配。

使用 pipreqs 的基本命令格式如下:

bash 复制代码
pipreqs [options] <directory>

其中 <directory> 是你想要分析的项目目录的路径。例如:

bash 复制代码
pipreqs /path/to/your/project

这将扫描指定目录,并生成一个 requirements.txt 文件,列出项目中使用的所有依赖项。

首先,需要安装pipreqs:

pip install pipreqs

然后,在项目根目录下运行:

pipreqs . --encoding=utf8 --force

--encoding=utf8参数确保正确处理非ASCII字符

--force参数覆盖已存在的requirements.txt文件

这将在当前目录下生成一个requirements.txt文件,其中只包含你的代码实际导入使用的包。

可能遇到的问题

问题一:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\Scripts\pipreqs.exe\__main__.py", line 7, in <module>
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\pipreqs\pipreqs.py", line 609, in main
    init(args)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\pipreqs\pipreqs.py", line 572, in init
    imports = local + get_imports_info(difference, proxy=proxy, pypi_server=pypi_server)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\pipreqs\pipreqs.py", line 238, in get_imports_info
    response = requests.get("{0}{1}/json".format(pypi_server, item), proxies=proxy)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 682, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))

这个错误信息显示了在使用 pipreqs 时遇到了网络连接问题。

具体来说,requests.exceptions.ConnectionError 表明请求因为某种网络问题而被中断。

ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。') 是一个更具体的错误,指出连接被远程主机强制关闭。

临时绕过这个问题,可以尝试使用 --use-local 参数,这样 pipreqs 将使用本地环境中的包版本,而不是尝试从远程服务器获取信息:

pipreqs --use-local

请注意,这将生成一个包含本地项目中使用的包版本的 requirements.txt 文件,而不会检查远程PyPI服务器上的可用版本。

也可以尝试更新 pipreqs 和 requests

要更新 pipreqsrequests 这两个Python包,你可以使用 pip,这是Python的包安装器。以下是更新这两个包的步骤:

  1. 打开命令行界面(在Windows上是命令提示符或PowerShell,在macOS或Linux上是终端)。

  2. 首先,确保 pip 是最新版本。可以使用以下命令来升级 pip

    bash 复制代码
    python -m pip install --upgrade pip
  3. 然后,使用以下命令来更新 requests

    bash 复制代码
    pip install --upgrade requests
  4. 接下来,更新 pipreqs

    bash 复制代码
    pip install --upgrade pipreqs

这些命令将会查找最新版本的 requestspipreqs 并安装它们。如果你使用的是虚拟环境,确保你已经激活了相应的环境再执行上述命令。

如果你想要确保安装的是特定版本的包,也可以指定版本号,例如:

bash 复制代码
pip install requests==2.25.1
pip install pipreqs==0.4.10

请将版本号替换为你想安装的版本。

另外,如果你使用的是Python 3,并且系统中同时安装了Python 2,可能需要使用 pip3 来代替 pip 命令。

更新完成后,你可以使用以下命令来检查安装的包版本,确保它们已经被更新:

bash 复制代码
pip show requests
pip show pipreqs

这些命令将显示每个包的版本信息和其他元数据。如果更新过程中遇到任何问题,可能需要检查网络连接或查看错误信息来进一步诊断问题。

问题二:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\Scripts\pipreqs.exe\__main__.py", line 7, in <module>
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\pipreqs\pipreqs.py", line 609, in main
    init(args)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\pipreqs\pipreqs.py", line 572, in init
    imports = local + get_imports_info(difference, proxy=proxy, pypi_server=pypi_server)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\pipreqs\pipreqs.py", line 238, in get_imports_info
    response = requests.get("{0}{1}/json".format(pypi_server, item), proxies=proxy)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\huawei4\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 700, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /pypi/PySide2/json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000022551C7F2E0>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积 极拒绝,无法连接。'))

这个错误信息显示了在使用 pipreqs 时遇到了一个 ConnectionError,这表明尝试连接到 pypi.python.org 时连接请求被远程主机拒绝了。

未能解决。。。。

相关推荐
nuclear201140 分钟前
使用Python 在Excel中创建和取消数据分组 - 详解
python·excel数据分组·创建excel分组·excel分类汇总·excel嵌套分组·excel大纲级别·取消excel分组
Lucky小小吴1 小时前
有关django、python版本、sqlite3版本冲突问题
python·django·sqlite
GIS 数据栈1 小时前
每日一书 《基于ArcGIS的Python编程秘笈》
开发语言·python·arcgis
爱分享的码瑞哥1 小时前
Python爬虫中的IP封禁问题及其解决方案
爬虫·python·tcp/ip
傻啦嘿哟3 小时前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
B站计算机毕业设计超人3 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
IT古董3 小时前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
湫ccc3 小时前
《Python基础》之pip换国内镜像源
开发语言·python·pip
hakesashou3 小时前
Python中常用的函数介绍
java·网络·python
菜鸟的人工智能之路4 小时前
极坐标气泡图:医学数据分析的可视化新视角
python·数据分析·健康医疗