[python] requirements.txt 자동 생성

때로는 파이썬 소스 코드를 다운로드하여 github모든 종속성을 설치하는 방법을 모릅니다. requirements.txt파일 이 없으면 직접 작성해야합니다. 파이썬 소스 코드 디렉토리가 주어지면 requirements.txt가져 오기 섹션에서 자동으로 만들 수 있습니까?



답변

가상 환경을 사용한다면 pip freeze > requirements.txt괜찮습니다. 그렇지 않을 경우 , pigar는 당신을 위해 좋은 선택이 될 것입니다.

그건 그렇고, 나는 그것이 2.6에서 작동하는지 보장하지 않습니다.

업데이트 :

개발 흐름을 개선 하려면 Pipenv 또는 기타 도구가 권장됩니다.

들어 파이썬 3 아래 사용

pip3 freeze > requirements.txt


답변

다음 코드를 사용하여 requirements.txt 파일을 생성 할 수 있습니다.

pip install pipreqs

pipreqs /path/to/project

pipreq와 관련된 자세한 정보는 여기를 참조하십시오 .

때때로을 만나지 pip freeze만 현재 프로젝트에서 사용하지 않는 패키지를 포함하여 환경의 모든 패키지를 저장합니다.


답변

필자의 경우 Anaconda를 사용하므로 환경 내 conda 터미널에서 다음 명령을 실행하면 문제가 해결되고 자동 으로이 요구 사항 txt 파일이 만들어졌습니다.

conda list -e > requirements.txt

이 Github 링크 pratos / condaenv.txt에서 가져 왔습니다.

오류가 발생하고 아나콘다를 사용하는 경우 .yml 옵션을 사용하십시오.

conda env export > <environment-name>.yml

다른 사람이 환경을 사용하려면 … 또는 다른 컴퓨터에서 새 환경을 만드는 경우 : conda env create -f .yml

.yml 옵션은 여기에서 찾을 수 있습니다


답변

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))

추신 : 퍼지 로직을 검사 할 때 몇 가지 추가 라이브러리가있을 수 있습니다.


답변

Python 3의 가장 좋은 방법은 다음과 같습니다.

pip3 freeze > requirements.txt

그것은 나를 위해 일했다 …


답변

PyCharm을 사용하는 경우 PyCharm에서 프로젝트를 열거 나 복제 할 때 경고가 표시되고 필요한 모든 패키지를 설치하도록 요청합니다.