Igo*_*nov 205 python dependencies requirements python-import
有时我从下载python源代码,github不知道如何安装所有依赖项.如果没有requirements.txt文件,我必须手工创建.问题是:鉴于python源代码目录是否可以requirements.txt从导入部分自动创建?
DJa*_*ens 282
您可以使用以下代码生成requirements.txt文件:
pip install pipreqs
pipreqs /path/to/project
Run Code Online (Sandbox Code Playgroud)
有关pipreqs的更多信息可以在这里找到.
有时您遇到过pip freeze,但这会保存环境中的所有包,包括您当前项目中未使用的包.
dam*_*ver 201
如果你使用虚拟环境,pip freeze > requirements.txt就好了.如果没有,pigar将是一个不错的选择.
顺便说一下,我不确定它是否适用于2.6.
更新:
建议使用Pipenv或其他工具来改善您的开发流程.
Sne*_*osh 61
令人难以置信的是,这个简单的任务在 Python 中却如此复杂。这是我认为自动执行此操作的最佳方法。
你需要两个工具:
1. pipreqs
pip3 install pipreqs
pipreqs 将遍历您的项目并仅安装您的项目使用的软件包。而不是像你的 python 环境中的所有包那样pip freeze。
但这种方法有一个问题。它不安装子包。
例如,您的项目使用pandas==1.3.2. 本身与其他包一起pandas使用。numpy==1.21.2但pipreqs本身并没有将子包(即numpy)写入requirments.txt
这是您需要pipreqs与第二个工具结合使用的地方。
pip3 install pip-tools
pip-tools将接收包requirements.in并生成requirements.txt包含所有子包的包。例如,如果您有
pandas==1.3.2in requirements.in,pip-tools将生成
numpy==1.21.2 # via pandas在requirements.txt。
但需要手动添加包requirements.in。这很容易出错,您可能偶尔会忘记这样做。
这是您可以使用第一个工具的地方。
但这两个工具都写入到requirements.txt. 那么如何解决呢?
使用 --savepathfor代替默认的pipreqs进行写入。requirements.inrequirements.txt
用一个命令来完成它;做就是了
pipreqs --savepath=requirements.in && pip-compile
就这样吧。现在,您无需担心手动维护包,并且您将requirements.txt拥有所有子包,以便您的构建具有确定性。
长话短说
pip3 install pipreqspip3 install pip-tools使用以下内容构建确定性requirements.txt
pipreqs --savepath=requirements.in && pip-compile
Mos*_*ael 29
因为大多数答案pipreqs对我来说不起作用。这是我的答案。
生成requirements.txt文件:
pip install pipreqs
python -m pipreqs.pipreqs --encoding utf-8 /path/to/project
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用pipreqsmore pip freeze,因为pip freeze可以保存环境中的所有包,包括您当前项目中未使用的包。但是,pipreqs仅保存您在项目中使用的那些。
要安装要求,请使用:
pip3 install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
cha*_*dot 15
您只需使用以下命令即可完成此操作。它将创建文件requirement.txt并自动添加相关模块。
对于 Unix:
pip3 freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
对于 Windows:
pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
小智 13
首先,你的项目文件必须是一个py文件,它是直接的python文件。如果您的文件是 ipynb 格式,您可以使用以下代码行将其转换为 py 类型:
jupyter nbconvert --to=python
Run Code Online (Sandbox Code Playgroud)
然后,您需要从 cmd(mac 终端)安装 pipreqs 库。
pip install pipreqs
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用下面的代码创建txt文件。如果您与文件位于同一路径,则只需编写 ./ 。否则,您需要提供文件的路径。
pipreqs ./
Run Code Online (Sandbox Code Playgroud)
或者
pipreqs /home/project/location
Run Code Online (Sandbox Code Playgroud)
这将为您的项目创建一个 requirements.txt 文件。
小智 13
对于Python 3版本,命令是:
pip3 freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
对于Python 2版本,命令是:
pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
对于Python 3版本,命令是:
pip3 install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
对于Python 2版本,命令是:
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
voi*_*lex 12
在使用requirements.txt开发Python应用程序时,我们有多种选择:
pip freeze > requirements.txt或pipreqs为了减少混乱的结果而执行的。第一个选项有很多答案,第二个选项是不言自明的,所以我想描述第三种方法。有一个名为to-requirements.txt 的库。要安装它,请输入:
pip install to-requirements.txt # Pip install to requirements.txt
Run Code Online (Sandbox Code Playgroud)
如果您立即阅读整个命令,您就会看到它的作用。安装后您应该进行设置。跑步:
requirements-txt init
Run Code Online (Sandbox Code Playgroud)
它会覆盖 pip 脚本,以便使用pip install所需版本的包自动pip uninstall更新项目的requirements.txt文件。覆盖是安全进行的,因此卸载此软件包后,pip 将表现正常。
您还可以自定义它的工作方式。例如,全局禁用它并仅针对所需目录激活它,仅针对 git 存储库激活它,或者允许/禁止创建requirements.txt 文件(如果它不存在)。
参考:
小智 11
确保为 python3.7 运行 pip3。
pip3 freeze >> yourfile.txt
Run Code Online (Sandbox Code Playgroud)
在执行上述命令之前,请确保您已经创建了一个虚拟环境。
蟒蛇3:
pip3 install virtualenv
python3 -m venv <myenvname>
Run Code Online (Sandbox Code Playgroud)
蟒蛇2:
pip install virtualenv
virtualenv <myenvname>
Run Code Online (Sandbox Code Playgroud)
之后,将您的源代码放在目录中。如果您现在运行 python 文件,如果您使用的是非本机模块,它可能不会启动。您可以通过运行pip3 install <module>或来安装这些模块pip install <module>。
除了您所在的环境之外,这不会影响您的整个模块列表。
现在您可以在顶部执行命令,现在您有一个需求文件,其中仅包含您在虚拟环境中安装的模块。现在您可以运行顶部的命令。
我建议每个人都使用环境,因为当涉及到这样的事情时,它会让事情变得更容易。
如果面临与我相同的问题,即不在虚拟环境中,并且需要针对特定项目或来自所选文件夹(包括子项)的requirements.txt,则 pipreqs 不支持。
您可以使用 :
import os
import sys
from fuzzywuzzy import fuzz
import subprocess
path = "C:/Users/Username/Desktop/DjangoProjects/restAPItest"
files = os.listdir(path)
pyfiles = []
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith('.py'):
pyfiles.append(os.path.join(root, file))
stopWords = ['from', 'import',',','.']
importables = []
for file in pyfiles:
with open(file) as f:
content = f.readlines()
for line in content:
if "import" in line:
for sw in stopWords:
line = ' '.join(line.split(sw))
importables.append(line.strip().split(' ')[0])
importables = set(importables)
subprocess.call(f"pip freeze > {path}/requirements.txt", shell=True)
with open(path+'/requirements.txt') as req:
modules = req.readlines()
modules = {m.split('=')[0].lower() : m for m in modules}
notList = [''.join(i.split('_')) for i in sys.builtin_module_names]+['os']
new_requirements = []
for req_module in importables:
try :
new_requirements.append(modules[req_module])
except KeyError:
for k,v in modules.items():
if len(req_module)>1 and req_module not in notList:
if fuzz.partial_ratio(req_module,k) > 90:
new_requirements.append(modules[k])
new_requirements = [i for i in set(new_requirements)]
new_requirements
with open(path+'/requirements.txt','w') as req:
req.write(''.join(new_requirements))
Run Code Online (Sandbox Code Playgroud)
PS:它可能有一些额外的库,因为它检查了模糊逻辑。
Python 3 的最佳方法是:
pip3 freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
它对我有用...
我盲目地遵循使用 pip3 freeze > requirements.txt 的公认答案
它生成了一个巨大的文件,列出了整个解决方案的所有依赖项,这不是我想要的。
所以你需要弄清楚你要生成什么样的requirements.txt。
如果您需要一个包含所有依赖项的requirements.txt 文件,请使用 pip3
pip3 freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
但是,如果您想生成一个仅列出您需要的依赖项的最小 requirements.txt,则使用 pipreqs 包。如果您在项目中的每个组件级别有大量的 requirements.txt 文件而不是解决方案范围级别的单个文件,则特别有用。
pip install pipreqs
pipreqs [path to folder]
e.g. pipreqs .
pipreqs . --force --ignore=tests (Overwrites exisiting requirements.txt, ignores the tests directory)
Run Code Online (Sandbox Code Playgroud)
小智 6
就我而言,我使用Anaconda,因此从我的环境中的conda终端运行以下命令即可解决该问题,并自动为我创建了此需求txt文件:
conda list -e > requirements.txt
Run Code Online (Sandbox Code Playgroud)
这是从Github链接pratos / condaenv.txt中获取的
To get a list of all the REQUIREMENTS in a standard requirements.txt file, you can use the following command.
pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
Now, this should automatically create a standard requirements file with all of the packages installed alongside their corresponding versions.
If you just want to get a pretty print on the terminal you can use the following approach.
pip list
Run Code Online (Sandbox Code Playgroud)
This lists all of the installed packages, in a pretty print format.
如果你有一个像 Github Repo 这样的项目文件夹,并且你想为项目获得一个自定义的 requirements.txt你可以使用下面的包。
https://pypi.org/project/pipreqs/ pipreqs
$ pipreqs /home/project/location
Successfully saved requirements file in /home/project/location/requirements.txt
Run Code Online (Sandbox Code Playgroud)
requirements.txt 的内容
wheel==0.23.0
Yarg==0.1.9
docopt==0.6.2
Run Code Online (Sandbox Code Playgroud)
@Francis 说得对 - /sf/answers/4600992301/
但只是补充一下:
通过对 Jupyter 笔记本(即.ipynb文件)的额外支持,您现在可以使用https://pypi.org/project/pipreqsnb(与 pipreqs 的语法相同):
pip install pipreqsnb
pipreqsnb .
Run Code Online (Sandbox Code Playgroud)
[我不是作者]
如果您只想列出 virtualenv 中使用的包,请使用:
pip freeze -l > requirements.txt
Run Code Online (Sandbox Code Playgroud)
小智 5
如果你的系统中已经安装了很多依赖,并且你需要一个特定项目的requirements.txt,你可以先安装pipreqs:
$ pip install pipreqs
Run Code Online (Sandbox Code Playgroud)
并在项目文件夹下执行以下命令。
$ pipreqs
Run Code Online (Sandbox Code Playgroud)
此命令将为特定项目生成 requirements.txt 文件。
对于python3:(我的机器上有python 2和3,其中python2是默认值)
# install
pip3 install pipreqs
# Run in current directory
python3 -m pipreqs.pipreqs .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
115741 次 |
| 最近记录: |