때로는 파이썬 소스 코드를 다운로드하여 github모든 종속성을 설치하는 방법을 모릅니다. requirements.txt파일 이 없으면 직접 작성해야합니다. 파이썬 소스 코드 디렉토리가 주어지면 requirements.txt가져 오기 섹션에서 자동으로 만들 수 있습니까?
pip freeze의 현재 버전을 덤프 all합니다. b) pip는 pip를 통해 설치된 모듈 만 나열합니다
때로는 파이썬 소스 코드를 다운로드하여 github모든 종속성을 설치하는 방법을 모릅니다. requirements.txt파일 이 없으면 직접 작성해야합니다. 파이썬 소스 코드 디렉토리가 주어지면 requirements.txt가져 오기 섹션에서 자동으로 만들 수 있습니까?
pip freeze의 현재 버전을 덤프 all합니다. b) pip는 pip를 통해 설치된 모듈 만 나열합니다
답변:
가상 환경을 사용한다면 pip freeze > requirements.txt괜찮습니다. 그렇지 않을 경우 , pigar는 당신을 위해 좋은 선택이 될 것입니다.
그건 그렇고, 나는 그것이 2.6에서 작동하는지 보장하지 않습니다.
업데이트 :
개발 흐름을 개선 하려면 Pipenv 또는 기타 도구가 권장됩니다.
들어 파이썬 3 아래 사용
pip3 freeze > requirements.txt
pip3 freeze > requirements.txt은 질문하기 전에 시도해 보는 것이 좋습니다 .
pip3 freeze > requirements.txt하고 나는 내가 실제로 등을 사용하고 일부 패키지를 찾을 수에 놀랐 argparse하고 configparser. 파이썬 코어의 일부이기 때문입니까? 더 나은 대답은 pipreqs프로젝트에서 사용하는 요구 사항 만 나열하기 때문에 아래 에서 사용 하는 것입니다.
argparse그리고 configparserPython3 표준 라이브러리에 속해, 그래서, 무슨 잘못 pip3 freeze? 나는 당신의 요점을 얻지 못합니다.
pip3 freeze내 환경에 설치된 모든 Python 패키지 목록을 pipreqs제공 하는 반면 필자가 찾고있는 소스 코드에서 실제로 사용 된 모든 패키지를 제공합니다. 그 외에는 아무 문제가 없습니다.
다음 코드를 사용하여 requirements.txt 파일을 생성 할 수 있습니다.
pip install pipreqs
pipreqs /path/to/project
pipreq와 관련된 자세한 정보는 여기를 참조하십시오 .
때때로을 만나지 pip freeze만 현재 프로젝트에서 사용하지 않는 패키지를 포함하여 환경의 모든 패키지를 저장합니다.
pipreqs. 파이썬 2.6에 설치하고 동일한 경고가 표시되었지만 requirements.txt@DJanssens
필자의 경우 Anaconda를 사용하므로 환경 내 conda 터미널에서 다음 명령을 실행하면 문제가 해결되고 자동 으로이 요구 사항 txt 파일이 만들어졌습니다.
conda list -e > requirements.txt
이 Github 링크 pratos / condaenv.txt에서 가져 왔습니다.
오류가 발생하고 아나콘다를 사용하는 경우 .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>
그런 다음 소스 코드를 디렉토리에 넣으십시오. 파이썬 파일을 지금 실행하면 네이티브가 아닌 모듈을 사용하는 경우 시작되지 않을 것입니다. 당신은 그 모듈 실행을 설치할 수 있습니다
pip3 install <module> or 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))
추신 : 퍼지 로직을 검사 할 때 몇 가지 추가 라이브러리가있을 수 있습니다.
pip freeze > requirements.txt하면 현재 버전의 모든 파이썬 라이브러리가requirements.txt파일 로 저장됩니다