有时我从那里下载python源代码,github
却不知道如何安装所有依赖项。如果没有requirements.txt
文件,则必须手动创建。问题是:给定python源代码目录,是否可以requirements.txt
从import部分自动创建?
pip freeze
转储all
已安装模块的当前版本。b)pip将仅列出已通过pip安装的模块
有时我从那里下载python源代码,github
却不知道如何安装所有依赖项。如果没有requirements.txt
文件,则必须手动创建。问题是:给定python源代码目录,是否可以requirements.txt
从import部分自动创建?
pip freeze
转储all
已安装模块的当前版本。b)pip将仅列出已通过pip安装的模块
Answers:
如果您使用虚拟环境,pip freeze > requirements.txt
就可以了。IF NOT,pigar将是您不错的选择。
顺便说一句,我不保证它能在2.6下使用。
更新:
建议使用Pipenv或其他工具来改善开发流程。
对于Python 3,请在下面使用
pip3 freeze > requirements.txt
pip3 freeze > requirements.txt
在提出问题之前先尝试一下。
pip3 freeze > requirements.txt
,很惊讶地没有找到我实际上正在使用的某些软件包,例如argparse
and configparser
。是否因为它们是Python核心的一部分?我相信一个更好的答案是在pipreqs
下面使用,因为它只会列出您的项目正在使用的需求。
argparse
而且configparser
是属于Python3标准库,因此,这有什么错pip3 freeze
?我不明白你的意思。
pip3 freeze
提供了我环境中安装的所有Python软件包的列表,而pipreqs
提供了我一直在寻找的源代码中实际使用的所有Python软件包的列表。除此之外,它没有任何问题。
您可以使用以下代码来生成requirements.txt文件:
pip install pipreqs
pipreqs /path/to/project
与pipreqs相关的更多信息可以在这里找到。
有时您会碰到pip freeze
,但这会保存环境中的所有程序包,包括您当前项目中未使用的程序包。
pipreqs
,我在python 2.6上安装了它,并得到了同样的警告,但是它确实创建了一个requirements.txt
文件,谢谢@DJanssens
it is strongly recommended to upgrade to a newer Python version
就我而言,我使用的是Anaconda,因此从我的环境中的conda终端运行以下命令即可解决该问题,并自动为我创建了此需求txt文件:
conda list -e > requirements.txt
摘自Github链接pratos / condaenv.txt
如果看到错误,并且您正在使用anaconda,请尝试使用.yml选项:
conda env export > <environment-name>.yml
供其他人使用的环境...或者如果要在其他计算机上创建新环境:conda env create -f .yml
pip install requirements.txt
拒绝。
确保为python3.7运行pip3。
pip3 freeze >> yourfile.txt
在执行上述命令之前,请确保已创建虚拟环境。
python3:
pip3 install virtualenv
python3 -m venv <myenvname>
python2:
pip install virtualenv
virtualenv <myenvname>
之后,将您的源代码放在目录中。如果您现在运行python文件,则可能在使用非本机模块时无法启动。您可以安装那些正在运行的模块
pip3 install <module> or pip install <module>
除了您所在的环境,这不会影响您的整个模块列表。
现在,您可以在顶部执行命令,现在有了一个需求文件,其中仅包含您在虚拟环境中安装的模块。现在,您可以在顶部运行命令。
我建议大家使用环境,因为这样的事情会使事情变得容易。
希望这会有所帮助。
如果与我面临同样的问题,即不在虚拟环境上,并且想要特定项目或从所选文件夹(包括子文件夹)和pipreqs获得requirements.txt,则不支持。
您可以使用 :
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))
PS:在检查Fuzzylogic时,可能还有一些其他库。
pip freeze > requirements.txt
将所有当前版本的python库保存到requirements.txt
文件中