from example another python dependencies python-import requirements

python - example - Crear automáticamente require.txt



python import from parent directory (5)

En mi caso, uso Anaconda, por lo que ejecutar el siguiente comando desde la terminal conda dentro de mi entorno lo resolvió y creó este archivo txt de requisitos para mí automáticamente:

conda list -e > requirements.txt

Esto fue tomado de este enlace de Github pratos/condaenv.txt

A veces descargo el código fuente de github desde github y no sé cómo instalar todas las dependencias. Si no hay un archivo require.txt, tengo que crearlo a mano. La pregunta es: dado el directorio del código fuente de Python, ¿es posible crear requirements.txt automáticamente desde la sección de importación?


Puede usar el siguiente código para generar un archivo require.txt:

pip install pipreqs pipreqs /path/to/project

Puede encontrar más información relacionada con pipreqs here .

A veces te encuentras con pip freeze , pero esto guarda todos los paquetes en el entorno, incluidos los que no usas en tu proyecto actual.


Si enfrenta el mismo problema que el mío, es decir, no está en el entorno virtual y quiere require.txt para un proyecto específico o de la carpeta seleccionada (incluye elementos secundarios ) y pipreqs no es compatible.

Puedes usar :

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

PD: puede tener algunas bibliotecas adicionales, ya que comprueba fuzzylogic.


Si usa un entorno virtual, pip freeze > requirements.txt está bien. Si no, pigar será una buena opción para ti.

Por cierto, no me aseguro de que funcione con 2.6.

ACTUALIZACIÓN

Pipenv u otras herramientas para mejorar su flujo de desarrollo.


Asegúrese de ejecutar pip3 para python3.7.

pip3 freeze >> yourfile.txt

Antes de ejecutar el comando anterior, asegúrese de haber creado un entorno virtual.

python3:

pip3 install virtualenv python3 -m venv <myenvname>

python2 :

pip install virtualenv virtualenv <myenvname>

Después de eso, ponga su código fuente en el directorio. Si ejecuta el archivo python ahora, probablemente no se iniciará si está utilizando módulos no nativos. Puedes instalar esos módulos corriendo

pip3 install <module> or pip install <module>

Esto no afectará su lista completa de módulos, excepto el entorno en el que se encuentra.

Ahora puede ejecutar el comando en la parte superior y ahora tiene un archivo de requisitos que contiene solo los módulos que instaló en el entorno virtual. Ahora puede ejecutar el comando en la parte superior.

Aconsejo a todos que usen entornos, ya que facilita las cosas cuando se trata de cosas como esta.

Espero que esto haya ayudado.